题目描述
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。
输入例子:
0xA
输出例子:
10
注意输出格式。利用stringstream来解决从int到string的转换
#include <iostream>
#include <string>
#include <sstream>
#include <map>
#include <cmath>
using namespace std;
int toTen(const string str);
map<char, int> index = {
{ '0', 0 },
{ '1', 1 },
{ '2', 2 },
{ '3', 3 },
{ '4', 4 },
{ '5', 5 },
{ '6', 6 },
{ '7', 7 },
{ '8', 8 },
{ '9', 9 },
{ 'a', 10 },
{ 'A', 10 },
{ 'b', 11 },
{ 'B', 11 },
{ 'C', 12 },
{ 'c', 12 },
{ 'd', 13 },
{ 'D', 13 },
{ 'E', 14 },
{ 'e', 14 },
{ 'f', 15 },
{ 'F', 15 }
};
int main()
{
string str;
while (cin >> str){
int res = 0;
str = str.substr(2);
for (int i = 0; i <str.size(); ++i)
{
res = res + index[str[i]] * pow(16, str.size()-i-1);
}
stringstream ss;
ss <<res;
ss >> str;
cout << str << endl;
}
//system("pause");
return 0;
}