1、借用map做映射集,使得0-f的字符对应的数字是0-15
2、接受字符串从后往前遍历借助中间变量sum通过十六进制转十进制公式
3、输出结果
#include<iostream>
#include<map>
#include<math.h>
using namespace std;
int main(){
//0-f十六进制
string input;
map<char,int> map;
int sum,count;
for(int i=0;i<10;i++){
char c = i+48;
map[c]=i;
}
for(int i=10;i<16;i++){
char c = i+65-10;
map[c]=i;
}
// cout<<map.at('A')<<endl;
while(cin>>input){
sum=0;
count=0;
for(int i=input.length()-1;i>=0;i--){
if(input[i]=='x')break;
sum+=map.at(input[i])*pow(16,count++);
}
cout<<sum<<endl;
}
} 
京公网安备 11010502036488号