将十六进制数转换成十进制数。
思路:
1、取低位数;
2、将低位数转换成相应的十进制数,,如A~10,C~12;
3、将转换的十进制数乘以16的n次方;
4、相加。
#include <stdio.h>
#include <string.h>
#include <math.h>
int fun (char ch)
{
int a;
switch (ch)
{
case 'A': return 10; //A~F单独转换
case 'B': return 11;
case 'C': return 12;
case 'D': return 13;
case 'E': return 14;
case 'F': return 15;
default :
a = (int)(ch - '0'); //0~9强制转换成int型
return a;
}
}
int trans (char *str)
{
int len = strlen (str);
int i, num;
int j = 0;
int sum = 0;
for (i = len - 1;i >= 0; i--)
{
char ch = str[i]; //取低位数转换
num = fun (ch);
sum += num * pow(16,j); //转换成十进制数
j++;
}
return sum;
}
int main()
{
printf ("将十六进制转换为十进制\n");
char str[100];
scanf ("%s",str);
int sum = trans (str);
printf ("%d\n",sum);
return 0;
}