16进制转10进制用c语言
时间: 2024-08-15 11:04:19 浏览: 126
在C语言中,将16进制数转换成10进制数通常通过字符串处理函数和循环结构来实现。下面是一个简单的示例,展示了如何完成这个转换:
```c
#include <stdio.h>
#include <string.h>
// 函数用于将16进制字符串转换为整数
int hex_to_decimal(char hex[]) {
int decimal = 0;
int len = strlen(hex);
bool isNegative = false;
// 如果以负号开头,标记并移除
if (hex == '-') {
isNegative = true;
len--;
}
for(int i = 0; i < len; i++) {
// 确保字符是有效的16进制数字
if(isdigit(hex[i]) || (hex[i] >= 'a' && hex[i] <= 'f')) {
decimal = decimal * 16 + (hex[i] - (islower(hex[i]) ? 'a' - 10 : 'A' - 10));
} else {
printf("Invalid hexadecimal digit found.\n");
return -1;
}
}
// 如果原数是负数,添加负号到结果
if (isNegative) {
decimal *= -1;
}
return decimal;
}
int main() {
char hexNum[] = "FF"; // 示例的16进制数
int decimalValue = hex_to_decimal(hexNum);
if(decimalValue != -1) {
printf("Hexadecimal %s equals decimal %d.\n", hexNum, decimalValue);
}
return 0;
}
```
在这个例子中,`hex_to_decimal`函数接收一个包含16进制数的字符串作为输入,并逐位计算对应的十进制值。如果遇到无效的十六进制字符,它会返回-1表示错误。
阅读全文