问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
#include <stdio.h>
#include <math.h>
#include <string.h>
int main()
{
char str[10]="";
long long sum = 0;
int len;
int temp;
int i;
scanf("%s",str);
len = strlen(str);
len = len - 1;
for(i = 0; len >= 0; len--,i++)
{
switch(str[len])
{
case '0':
temp = 0;
break;
case '1':
temp = 1;
break;
case '2':
temp = 2;
break;
case '3':
temp = 3;
break;
case '4':
temp = 4;
break;
case '5':
temp = 5;
break;
case '6':
temp = 6;
break;
case '7':
temp = 7;
break;
case '8':
temp = 8;
break;
case '9':
temp = 9;
break;
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;
}
sum += (pow(16,i) * temp);
}
printf("%I64d\n",sum);
return 0;
}