C语言实现十六进制转为十进制
时间: 2024-08-17 17:01:52 浏览: 139
在C语言中,将十六进制数转换为十进制数可以通过循环遍历每一位,并利用十六进制每位对应的权重来计算。下面是一个简单的示例函数,它接受一个十六进制字符串作为输入:
```c
#include <stdio.h>
#include <string.h>
int hex_to_dec(const char* hex_str) {
int decimal = 0;
int len = strlen(hex_str);
for (int i = 0; i < len; ++i) {
if (hex_str[i] >= '0' && hex_str[i] <= '9') {
decimal = decimal * 16 + hex_str[i] - '0';
} else if (hex_str[i] >= 'A' && hex_str[i] <= 'F') { // A-F相当于10-15
decimal = decimal * 16 + hex_str[i] - 'A' + 10;
} else if (hex_str[i] >= 'a' && hex_str[i] <= 'f') { // a-f相当于10-15
decimal = decimal * 16 + hex_str[i] - 'a' + 10;
} else {
printf("Invalid character at index %d\n", i);
return -1; // 或者抛出错误
}
}
return decimal;
}
// 使用示例
int main() {
const char* hex_num = "FF"; // 十六进制数
int dec_num = hex_to_dec(hex_num);
printf("Hexadecimal %s is equal to decimal %d\n", hex_num, dec_num);
return 0;
}
阅读全文