c语言16进制字符串转10进制
时间: 2024-12-14 17:13:25 浏览: 6
C语言二进制字符串与十六进制字符串相互转化
3星 · 编辑精心推荐
在C语言中,将十六进制字符串转换成十进制整数通常需要手动处理每一位,并利用`strtol()`函数或`atoi()`函数配合一些额外的步骤。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
long int hex_to_decimal(const char *hex_string) {
long int decimal = 0;
int i = 0;
while (hex_string[i]) {
if (hex_string[i] >= '0' && hex_string[i] <= '9') {
decimal = decimal * 16 + hex_string[i] - '0';
} else if (hex_string[i] >= 'a' && hex_string[i] <= 'f') {
decimal = decimal * 16 + hex_string[i] - 'a' + 10;
} else if (hex_string[i] >= 'A' && hex_string[i] <= 'F') {
decimal = decimal * 16 + hex_string[i] - 'A' + 10;
}
i++;
}
return decimal;
}
int main() {
const char* hex_str = "ff"; // 示例十六进制字符串
long int decimal_num = hex_to_decimal(hex_str);
printf("Hexadecimal %s is equal to decimal number %ld.\n", hex_str, decimal_num);
return 0;
}
```
在这个例子中,我们遍历字符串的每个字符,将其转换成相应的十进制数值并累加到结果上。注意,这个函数假设输入的字符串只包含有效的十六进制数字。
阅读全文