十六进制字符串转十进制数字 - C语言实现

本程序使用C语言实现十六进制字符串到十进制数字的转换。输入一个字符串,程序将过滤掉非十六进制字符,并将剩余的十六进制字符转换成十进制数字输出。

代码示例

#include <stdio.h>
#include <string.h>

int hexToDecimal(char hex[]) {
    int decimal = 0;
    int length = strlen(hex);
    int base = 1;
    
    for (int i = length - 1; i >= 0; i--) {
        if (hex[i] >= '0' && hex[i] <= '9') {
            decimal += (hex[i] - '0') * base;
        }
        else if (hex[i] >= 'A' && hex[i] <= 'F') {
            decimal += (hex[i] - 'A' + 10) * base;
        }
        base *= 16;
    }
    
    return decimal;
}

int main() {
    char string[80];
    printf("Enter a string: ");
    fgets(string, sizeof(string), stdin);
    
    // 去除字符串末尾的换行符
    string[strcspn(string, "\n")] = '\0';
    
    char newString[80];
    int j = 0;
    
    for (int i = 0; string[i] != '\0'; i++) {
        if ((string[i] >= '0' && string[i] <= '9') || (string[i] >= 'A' && string[i] <= 'F')) {
            newString[j] = string[i];
            j++;
        }
    }
    
    newString[j] = '\0';
    
    printf("New string: %s\n", newString);
    printf("Decimal value: %d\n", hexToDecimal(newString));
    
    return 0;
}

代码解释

  1. hexToDecimal 函数:

    • 该函数接收一个十六进制字符串作为参数。
    • 使用循环遍历字符串,将每个字符转换为十进制数并累加到 decimal 变量中。
    • base 变量用来记录当前字符的权重,初始值为 1,每循环一次乘以 16。
    • 最后返回 decimal 变量的值,即十进制数字。
  2. main 函数:

    • 从控制台输入一个字符串。
    • 调用 strcspn 函数去除字符串末尾的换行符。
    • 使用循环过滤掉非十六进制字符,并将剩余的十六进制字符存储到 newString 数组中。
    • 调用 hexToDecimal 函数将 newString 数组转换为十进制数字。
    • newString 和十进制数字输出到控制台。

总结

本程序使用 C 语言实现了十六进制字符串到十进制数字的转换。通过过滤掉非十六进制字符,并将剩余字符转换为十进制数字,最终得到正确的十进制结果。此程序可用于各种需要进行十六进制和十进制数字转换的应用场景。

十六进制字符串转十进制数字 - C语言实现

原文地址: https://www.cveoy.top/t/topic/bfNl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录