牛客网–华为机试在线训练5:进制转换
题目描述
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。
示例1
输入
0xA
输出
10
我的答案
#include<iostream>
#include<string>
#include<vector>
#include<math.h>
using namespace std;
int HA(int a, int b) { //库函数pow(n,i)函数要求n和i至少一个为浮点数
int res = 1; //所以就自己写了个函数
for (int i = 0; i < b; i++)
res *= a;
return res;
}
void HexToDec(string str) {
int Hex_int = 0, i = 0;
auto iter = str.rbegin();
for (iter, i; *iter != 'x'; iter++, i++) {
if (*iter >= '0' && *iter <= '9')
Hex_int += (*iter - '0')*HA(16,i);
else if (*iter >= 'A' && *iter <= 'F')
Hex_int += (*iter - 'A' + 10)*HA(16,i);
}
cout << to_string(Hex_int) << endl;
return;
}
int main() {
string str;
vector<string> temp;
while (cin >> str) {
temp.push_back(str);
}
for (int i = 0; i < temp.size(); i++)
HexToDec(temp[i]);
return 0;
}