问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
代码如下:
#include <iostream>
#include<cmath>
using namespace std;
int main()
{
unsigned long long ten = 0;;
string ans;
string sixteen;
cin >> sixteen;
for (int i = 0; i < sixteen.length(); i++)//转2进制
{
switch (sixteen[i])
{
case '0': ans += "0000"; break;
case '1': ans += "0001"; break;
case '2': ans += "0010"; break;
case '3': ans += "0011"; break;
case '4': ans += "0100"; break;
case '5': ans += "0101"; break;
case '6': ans += "0110"; break;
case '7': ans += "0111"; break;
case '8': ans += "1000"; break;
case '9': ans += "1001"; break;
case 'A': ans += "1010"; break;
case 'B': ans += "1011"; break;
case 'C': ans += "1100"; break;
case 'D': ans += "1101"; break;
case 'E': ans += "1110"; break;
case 'F': ans += "1111"; break;
default: break;
}
}
for (int j = 0;j<ans.length();j++)
{
if (ans[j] != '0')
{
ten += pow(2,ans.length() - j-1);
}
}
cout << ten;
}