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;
    }
}