描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
数据范围:保证结果在 1 < n < 2^{31}-1
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
示例1
输入:
0xAA
复制
输出:
170
这题有一个非常傻逼的点,就是你写的程序要能连续输入,否则通不过用例
并且题目中限定了n的范围,也降低了这道题的难度
int main()
{
std::string my_hex;
while (std::cin >> my_hex)
{
std::string _hex = my_hex.substr(2);
int pos = 0; //用来表示当前操作的位
unsigned long sum = 0;
for (auto it = _hex.rbegin(); it != _hex.rend(); it++)
{
int ascii_value = 0;
if ('0' <= *it && *it <= '9')
{
ascii_value = *it - '0';
}
else if ('a' <= *it && *it <= 'f')
{
ascii_value = *it - 'a' + 10;
}
else if ('A' <= *it && *it <= 'F')
{
ascii_value = *it - 'A' + 10;
}
sum += (ascii_value * pow(16, pos++));
}
std::string ret = std::to_string(sum);
std::cout <<ret << std::endl;
}
}