问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
//需注意八位十六进制转换为十进制之后int表示不了
#include<iostream>
#include<math.h>
#include<algorithm>
using namespace std;
int exchange16to10(char c)
{
int a;
switch(c)
{
case 'A':a = 10;break;
case 'B':a = 11;break;
case 'C':a = 12;break;
case 'D':a = 13;break;
case 'E':a = 14;break;
case 'F':a = 15;break;
default :a = c - '0';
}
return a;
}
int main()
{
long long n = 0;
string s;
cin>>s;
reverse(s.begin(),s.end());
for(int i=0;i<s.length();i++)
n += exchange16to10(s[i]) * pow(16,i);
cout<<n;
return 0;
}