问题描述:
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
解答:
整体思路:
任意进制数据转十进制数据的通 法——每次前面的数据乘以X进制,再加上当前位数的值
细节处理:
十进制的存储类型务必满足小于等于8位的十六进制数,即16^8==2^32——unsigned int/unsigned long/long long unsigned long long——win32平台
1 #include2 #include 3 4 using namespace std; 5 6 int main() 7 { 8 string dataX16; 9 cin>>dataX16;10 11 unsigned int 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< <