用c语言编程实现写一个自定义函数,将16进制转化为10进制输出
时间: 2024-10-16 08:16:01 浏览: 34
在C语言中,可以编写一个函数来实现十六进制数转换为十进制数。我们可以利用ASCII码表,其中大写字母'A'到'F'对应数值10到15,小写字母'a'到'f'也是同样范围。下面是一个简单的示例函数:
```c
#include <stdio.h>
#include <string.h>
// 十六进制转十进制的辅助函数
int hex_to_decimal(char hex_digit) {
if (hex_digit >= '0' && hex_digit <= '9') {
return hex_digit - '0';
} else if (hex_digit >= 'A' && hex_digit <= 'F') {
return hex_digit - 'A' + 10;
} else if (hex_digit >= 'a' && hex_digit <= 'f') {
return hex_digit - 'a' + 10;
}
// 如果输入不是有效的十六进制字符,返回0或抛出错误
return 0;
}
// 自定义函数:十六进制字符串转十进制整数
int hex_to_decimal_string(const char* hex_str) {
int decimal = 0;
int power = 0;
for (int i = strlen(hex_str) - 1; i >= 0; i--) {
decimal += hex_to_decimal(hex_str[i]) * pow(16, power);
power++;
}
return decimal;
}
int main() {
char hex_num[] = "FF"; // 示例十六进制数
int decimal_result = hex_to_decimal_string(hex_num);
printf("十六进制数 %s 转换为十进制是:%d\n", hex_num, decimal_result);
return 0;
}
```
在这个例子中,`hex_to_decimal_string`函数从右向左遍历输入的十六进制字符串,每次乘以16的相应幂次,并累加结果。这个程序会在控制台打印出转换后的十进制值。
阅读全文