C语言将十六进制字符串转为十进制数值
时间: 2025-02-11 17:35:00 AIGC 浏览: 124 评论: 5
在C语言中,将十六进制字符串转换成十进制数值通常需要通过遍历字符串、逐位计算然后累加的过程。这里可以借助标准库函数如`strtol()`或`strtoul()`,它们能够处理这种字符串到整数的转换。
```c
#include <stdio.h>
#include <stdlib.h>
long long int hex_to_decimal(const char *hex_str) {
long long int decimal_value = 0;
char *endptr;
for (int i = 0; hex_str[i]; ++i) {
if (hex_str[i] >= '0' && hex_str[i] <= '9') { // 十六进制数字0-9
decimal_value = decimal_value * 16 + hex_str[i] - '0';
} else if (hex_str[i] >= 'a' && hex_str[i] <= 'f') { // 十六进制数字A-F
decimal_value = decimal_value * 16 + hex_str[i] - 'a' + 10;
} else if (hex_str[i] >= 'A' && hex_str[i] <= 'F') { // 十六进制数字A-F大写
decimal_value = decimal_value * 16 + hex_str[i] - 'A' + 10;
} else {
// 如果遇到非十六进制字符,则返回错误值或抛出异常
return -1; // 或者你可以选择终止程序并输出错误信息
}
}
endptr = strtol(hex_str, &endptr, 16);
if (*endptr != '\0') {
// 如果不是完整的十六进制串,则返回错误值
return -1;
}
return decimal_value;
}
int main() {
const char* hexStr = "FF";
long long int decimal = hex_to_decimal(hexStr);
if (decimal >= 0) {
printf("Hexadecimal %s is equal to decimal value %lld\n", hexStr, decimal);
} else {
printf("Invalid hexadecimal string.\n");
}
return 0;
}
阅读全文
相关推荐




















评论

小崔个人精进录
2025.07.09
使用`strtol()`函数简化了转换过程,并且能够处理错误。

士多霹雳酱
2025.06.23
回答详细解释了C语言中十六进制字符串转十进制数值的方法,提供了代码示例。

阿葱的葱白
2025.06.04
给出了处理异常情况的建议,增强了代码的健壮性。🌈

学习呀三木
2025.04.21
示例代码结构清晰,易于理解和应用。

小埋妹妹
2025.03.17
代码示例中,除了手动计算,还展示了如何使用库函数进行转换。