编写程序将一个16进制数转换为十进制。任意进制如何转换为十进制?C语言
时间: 2024-12-19 13:25:03 浏览: 9
在C语言中,将16进制数转换为十进制通常会涉及到几个步骤。这里提供一种基于字符串处理的方法:
```c
#include <stdio.h>
#include <string.h>
// 函数定义,将十六进制字符串转换成整数
int hexToDecimal(char hex[]) {
int decimal = 0;
int len = strlen(hex);
int base = 1; // 初始权值
for (int i = len - 1; i >= 0; i--) {
if (hex[i] >= '0' && hex[i] <= '9') {
decimal += (hex[i] - '0') * base;
} else if (hex[i] >= 'A' && hex[i] <= 'F') { // 大写字母A-F代表10-15
decimal += (hex[i] - 'A' + 10) * base;
} else if (hex[i] >= 'a' && hex[i] <= 'f') { // 小写字母a-f也一样
decimal += (hex[i] - 'a' + 10) * base;
}
base *= 16; // 每次向左移动一位,基数翻倍
}
return decimal;
}
int main() {
char hexNum[] = "FF"; // 示例16进制数
int decimalValue = hexToDecimal(hexNum);
printf("Hexadecimal %s is equal to decimal %d.\n", hexNum, decimalValue);
return 0;
}
```
这个函数`hexToDecimal`从字符串的末尾开始遍历,通过判断每个字符是否代表16进制数字(0-9或A-F/a-f),计算出对应的十进制数值并累加到结果上。
阅读全文