问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
char a[8] = {0};//定义一字符数组
int temp = 0,i = 0,len = 0;
__int64 sum = 0;
gets(a);//输入字符串
len = strlen(a);
for( i = 0; '\0' != a[i]; i++ )
{
switch(a[i])//求得十六进制数各位的系数
{
case 'A': temp = 10;break;
case 'B': temp = 11;break;
case 'C': temp = 12;break;
case 'D': temp = 13;break;
case 'E': temp = 14;break;
case 'F': temp = 15;break;
default : temp = a[i] - '0';break;
}
sum += (temp*pow(16,len-1-i));//使用math.h
}
printf("%I64d",sum);
return 0;
}