c语言如何实现将16进制数转化为十进制数
时间: 2024-11-07 20:13:35 浏览: 185
c语言实现8位二进制编码转化成10进制、16进制
在C语言中,可以使用标准库函数`strtol`或者手动编写循环处理每一位十六进制数来将16进制数转换成十进制数。这里我会展示一种简单的方法:
```c
#include <stdio.h>
#include <string.h>
// 将16进制字符串转为整数(十进制)
int hex_to_decimal(char* hex_str) {
int decimal_num = 0;
int power = 0; // 用于计算每个数字位置的权重
for (int i = strlen(hex_str) - 1; i >= 0; i--) {
char current_char = hex_str[i];
if (current_char >= '0' && current_char <= '9') { // 0-9
decimal_num += (current_char - '0') * pow(16, power);
} else if (current_char >= 'A' && current_char <= 'F') { // A-F
decimal_num += (current_char - 'A' + 10) * pow(16, power);
} else if (current_char >= 'a' && current_char <= 'f') { // a-f
decimal_num += (current_char - 'a' + 10) * pow(16, power);
}
power++;
}
return decimal_num;
}
int main() {
char hex[] = "FF"; // 示例的16进制数
int decimal = hex_to_decimal(hex);
printf("16进制数 %s 转换成10进制数为:%d\n", hex, decimal);
return 0;
}
```
在这个例子中,我们从字符串的末位开始,依次处理每一位十六进制字符,并将其对应的十进制值累加到结果上。
阅读全文