十六进制转化为10进制用c语言生成函数
时间: 2024-09-13 17:03:59 浏览: 74
在C语言中,我们可以创建一个函数将十六进制数转换成十进制数。这通常涉及到循环遍历每一位并乘以16的相应幂次。下面是一个简单的示例函数:
```c
#include <stdio.h>
#include <string.h>
// 函数声明
unsigned int hex_to_decimal(char hex_string[]);
// 十六进制到十进制转换函数
unsigned int hex_to_decimal(char hex_string[]) {
int decimal = 0;
int power = 0;
// 遍历字符串从后往前,因为最右边的字符代表最低位
for (int i = strlen(hex_string) - 1; i >= 0; i--) {
// 检查字符是否为有效十六进制数字(0-9 或 A-F)
if ((hex_string[i] >= '0' && hex_string[i] <= '9') || (hex_string[i] >= 'A' && hex_string[i] <= 'F')) {
// 将字符转换为对应的十进制值(A-F 相当于 10-15)
int digit = hex_string[i] <= '9' ? hex_string[i] - '0' : hex_string[i] - 'A' + 10;
decimal += digit * pow(16, power);
power++;
} else {
printf("Invalid hexadecimal character found.\n");
return -1; // 如果遇到无效字符,返回错误码
}
}
return decimal;
}
int main() {
char hex_num[] = "FF"; // 示例十六进制数
unsigned int decimal_num = hex_to_decimal(hex_num);
if (decimal_num != -1) {
printf("Hexadecimal number %s is equal to decimal %d.\n", hex_num, decimal_num);
}
return 0;
}
阅读全文