#include<iostream>
#include<string>
#include<map>
using namespace std;
/*该题首先由了16进制转八进制的经验了,采用map进行一个键值对的对应关系,16进制字符串 -》 10进制的整数,
从高位算起,每一个循环数本身就乘与16,相当于位运算左移4位。解法大致如此
*/
map<char,int> map_my;
void map_hex_dex()
{
map_my['0'] = 0;
map_my['1'] = 1;
map_my['2'] = 2;
map_my['3'] = 3;
map_my['4'] = 4;
map_my['5'] = 5;
map_my['6'] = 6;
map_my['7'] = 7;
map_my['8'] = 8;
map_my['9'] = 9;
map_my['A'] = 10;
map_my['B'] = 11;
map_my['C'] = 12;
map_my['D'] = 13;
map_my['E'] = 14;
map_my['F'] = 15;
}
int main()
{
string str;
long long int sum = 0;
int a = 4;
map_hex_dex();
cin >> str;
for(int i = 0;i < str.length();i++)
{
sum *= 16;
sum += map_my[str[i]];
}
cout << sum;
return 0;
}
还有这样一种没什么意义的做法
#include<iostream>
using namespace std;
int main()
{
long long int a;
cin>> hex >> a;
cout << a;
return 0;
}