用C语言把十六进制转化为十进制
时间: 2024-12-08 12:24:08 浏览: 93
在C语言中,将十六进制转换成十进制通常涉及到对每一位十六进制数进行乘以相应的权值(16的幂),然后将所有结果相加。这里是一个简单的函数示例,它接受一个十六进制字符串作为输入:
```c
#include <stdio.h>
#include <string.h>
// 函数用于将十六进制字符串转换为十进制整数
int hex_to_decimal(const char *hex_str) {
int decimal = 0;
int base = 1; // 权值从右向左开始每次翻倍
size_t len = strlen(hex_str);
for (size_t i = len - 1; i >= 0; i--) {
if (hex_str[i] >= '0' && hex_str[i] <= '9') { // 0-9
decimal += (hex_str[i] - '0') * base;
} else if (hex_str[i] >= 'a' && hex_str[i] <= 'f') { // a-f
decimal += (hex_str[i] - 'a' + 10) * base;
} else if (hex_str[i] >= 'A' && hex_str[i] <= 'F') { // A-F
decimal += (hex_str[i] - 'A' + 10) * base;
} else {
printf("Invalid character in hexadecimal string.\n");
return -1; // 非法字符处理
}
base *= 16; // 下一位的权值是上一位的16倍
}
return decimal;
}
int main() {
const char* hex_str = "1aB"; // 示例十六进制字符串
int decimal_num = hex_to_decimal(hex_str);
if (decimal_num != -1) {
printf("Hexadecimal %s is equal to decimal %d.\n", hex_str, decimal_num);
}
return 0;
}
```
阅读全文