【华为机试】输入一个十六进制的数值字符串,输出该数值的十进制字符串

描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。

数据范围:保证结果在 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;
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值