C语言将十六进制字符串转为十进制数值
时间: 2025-02-11 09:35:00 浏览: 96
在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;
}
阅读全文
相关推荐


















