C语言 改写BToD函数 将十六进制转换成十进制
时间: 2025-06-22 15:45:00 浏览: 11
在C语言中,你可以编写一个名为`btoDec`的函数来实现将十六进制数转换为十进制数。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h> // 包含strlen函数
// 函数声明,接受字符串形式的十六进制数作为输入
int btoDec(char hexString[]);
// 十六进制到十进制的转换函数
int hex_to_dec(char hexDigit) {
switch (hexDigit) {
case '0': return 0;
case '1': return 1;
case '2': return 2;
case '3': return 3;
case '4': return 4;
case '5': return 5;
case '6': return 6;
case '7': return 7;
case '8': return 8;
case '9': return 9;
case 'A': case 'a': return 10;
case 'B': case 'b': return 11;
case 'C': case 'c': return 12;
case 'D': case 'd': return 13;
case 'E': case 'e': return 14;
case 'F': case 'f': return 15;
default: return -1; // 非法字符返回错误值
}
}
int btoDec(char hexString[]) {
int decimal = 0;
int power = strlen(hexString) - 1; // 计算最高位的幂
for (int i = 0; i < strlen(hexString); i++) {
char hexChar = hexString[i];
if (hexChar >= '0' && hexChar <= '9') {
decimal += hex_to_dec(hexChar) * pow(16, power);
} else if (hexChar >= 'A' && hexChar <= 'F' || hexChar >= 'a' && hexChar <= 'f') {
decimal += hex_to_dec(hexChar) * pow(16, power);
} else {
printf("Invalid hexadecimal character at position %d\n", i);
break;
}
power--;
}
return decimal;
}
int main() {
char hexInput[] = "FF"; // 示例十六进制字符串
int decOutput = btoDec(hexInput);
printf("Hexadecimal %s converts to decimal: %d\n", hexInput, decOutput);
return 0;
}
```
在这个例子中,我们首先定义了一个辅助函数`hex_to_dec()`用于单个十六进制字符转换到十进制,然后在`btoDec()`函数中遍历输入的字符串,通过乘以相应的16的幂次并累加得到十进制结果。
阅读全文
相关推荐


















