基于c语言,写一个把任意十六进制数转化为十进制数的代码
时间: 2024-01-24 16:04:03 浏览: 31
好的,我明白了。以下是一个将十六进制数转化为十进制数的C语言函数:
```
#include <stdio.h>
#include <string.h>
#include <math.h>
long int hex_to_decimal(char hex[]);
int main()
{
char hex[20];
printf("请输入一个十六进制数: ");
scanf("%s", hex);
printf("对应的十进制数为: %ld", hex_to_decimal(hex));
return 0;
}
long int hex_to_decimal(char hex[])
{
int length = strlen(hex);
long int decimal = 0;
int base = 1;
for(int i = length-1; i >= 0; i--)
{
if(hex[i] >= '0' && hex[i] <= '9')
{
decimal += (hex[i] - 48) * base;
base = base * 16;
}
else if(hex[i] >= 'a' && hex[i] <='f')
{
decimal += (hex[i] - 87) * base;
base = base * 16;
}
else if(hex[i] >= 'A' && hex[i] <='F')
{
decimal += (hex[i] - 55) * base;
base = base * 16;
}
}
return decimal;
}
```
这个函数是通过一位一位地读入十六进制数,并将其转化为十进制数。注意,在转化时,要将十六进制数中的A-F以及a-f分别转化为10-15的十进制数,并乘以对应的位数,再加到最终结果中。