接受一个十六进制的数,输出该数值的十进制表示
进制转换
http://www.nowcoder.com/questionTerminal/8f3df50d2b9043208c5eed283d1d4da6
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; } }