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