写一个十六进制转十进制的C语言代码
时间: 2025-01-05 16:39:35 浏览: 112
在C语言中,你可以通过循环和乘法运算来将一个十六进制数转换为对应的十进制值。下面是一个简单的示例,它假设输入的字符串只包含有效的十六进制字符:
```c
#include <stdio.h>
#include <string.h>
int hex_to_decimal(char *hex_str) {
int decimal = 0;
int len = strlen(hex_str);
bool isNegative = false;
// 检查是否以负号开头
if (hex_str[0] == '-') {
isNegative = true;
hex_str++; // 移动指针到第一位
len--;
}
for(int i = 0; i < len; i++) {
char digit = hex_str[i];
// 对于十六进制中的数字和字母
if ('0' <= digit && digit <= '9') {
decimal = decimal * 16 + digit - '0';
} else if ('A' <= digit && digit <= 'F') { // A-F相当于10-15
decimal = decimal * 16 + digit - 'A' + 10;
} else if ('a' <= digit && digit <= 'f') { // a-15
decimal = decimal * 16 + digit - 'a' + 10;
} else {
printf("Invalid hexadecimal character at index %d\n", i);
return -1;
}
}
// 如果原数是负数,需要再取反
if (isNegative)
decimal = -decimal;
return decimal;
}
int main() {
char hex[] = "FF";
int decimal_value = hex_to_decimal(hex);
printf("Hexadecimal %s is equal to decimal %d.\n", hex, decimal_value);
return 0;
}
```
阅读全文
相关推荐















