问题描述:
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
解答:
整体思路:
任意进制数据转十进制数据的通
法——每次前面的数据乘以X进制,再加上当前位数的值
细节处理:
十进制的存储类型务必使用unsigned long 或者 long long 类型,以满足测试数据的要求
1 #include<iostream> 2 #include<string> 3 4 using namespace std; 5 6 int main() 7 { 8 string dataX16; 9 cin>>dataX16; 10 11 long long dataX10=0; 12 13 for(int i=0;i<=dataX16.length()-1;i++) 14 { 15 switch(dataX16[i]) 16 { 17 case '0': dataX10=dataX10*16+0; break; 18 case '1': dataX10=dataX10*16+1; break; 19 case '2': dataX10=dataX10*16+2; break; 20 case '3': dataX10=dataX10*16+3; break; 21 case '4': dataX10=dataX10*16+4; break; 22 case '5': dataX10=dataX10*16+5; break; 23 case '6': dataX10=dataX10*16+6; break; 24 case '7': dataX10=dataX10*16+7; break; 25 case '8': dataX10=dataX10*16+8; break; 26 case '9': dataX10=dataX10*16+9; break; 27 case 'A': dataX10=dataX10*16+10; break; 28 case 'B': dataX10=dataX10*16+11; break; 29 case 'C': dataX10=dataX10*16+12; break; 30 case 'D': dataX10=dataX10*16+13; break; 31 case 'E': dataX10=dataX10*16+14; break; 32 case 'F': dataX10=dataX10*16+15; break; 33 } 34 } 35 36 cout<<dataX10<<endl; 37 38 return 0; 39 } 40 41