输入的十六进制数,通过字符型存放在a[]数组中。首先将字符型转为int型(将a转为10等等)存放在b[]数组中。在与10^n相乘在相加得出结果。
#include<stdio.h>
#include<math.h>
//16进制转10进制
int main(void)
{
char a[20]; //输入16进制数
int b[20] = { 0 }; //将输入的16进制转为int型
int i = 0, j = 0;
int sum = 0;
int c = 0;//最终10进制数
gets(a);
//printf("%s\n", a); //输出初始
//将其从char型强转为int型 存入 b[]中
while (a[sum] != '\0'){
if ((a[sum] >= 'a') && (a[sum] <= 'z'))
{
b[sum] = a[sum] - 'a' + 10;
sum++;
continue;
}
if ((a[sum] >= 'A') && (a[sum] <= 'Z'))
{
b[sum] = a[sum] - 'A' + 10;
sum++;
continue;
}
b[sum] = a[sum] - '0';
sum++;
}
//将每转为16进制
for (i = 0; i < sum; i++)
{
b[sum - i - 1] = b[sum - i - 1] * pow(16, i);
}
//累加得出结果
for (j = 0; j < sum; j++)
{
c = c + b[j];
}
printf("%d", c);
return 0;
}