题解 | #进制转换#

进制转换

https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6

#include <iostream>
#include<string>
using namespace std;

//写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。数据范围:保证结果在1≤n≤2^31−1
int fun1(int n)  //16的n次方
{;
	if (n == 0)
	{
		return 1;
	}
	return 16 * fun1(n-1);
}

int main()
{
	string str;
	cin >> str;
	int len = str.length();
	len -= 2;
	 //先把他0X分离出来
	str = str.substr(2,len);
	int s = 0;    //表示10进制的数据
	string strdata;//用来储存数据
	while (len != 0)
	{
		strdata = str.substr(0,1);  //截取最高位 16的len-1次方
		//A 65 B 66 C 67 D 68 E69 F70
		//10   11   12   13   14   15
		str = str.substr(1, len);  //将最高位去除
		len--;
	  //switch中的参数有要求 字符 数字或者是byte或者是枚举类型  不能是string double等类型
		switch (*strdata.data()) //strdata.data()是const char*类型 
		{
		case 'A':
			s += 10 * fun1(len);
			break;
		case 'B':
			s += 11 * fun1(len);
			break;
		case 'C':
			s += 12 * fun1(len);
			break;
		case 'D':
			s += 13 * fun1(len);
			break;
		case 'E':
			s += 14 * fun1(len);
			break;
		case 'F':
			s += 15 * fun1(len);
			break;
		default:
			s += stoi(strdata.data())*fun1(len);
			break;
		}
	}
	cout << s << endl;
	system("pause");
	return 0;
}

全部评论

相关推荐

04-15 09:59
门头沟学院 C++
yy_11:小公司人家没必要泄密,大公司都是本地部署了
你想吐槽公司的哪些规定
点赞 评论 收藏
分享
04-03 22:41
兰州大学 C++
老六f:有时候是HR发错了,我之前投的百度的后端开发,他给我发的算法工程师,但是确实面的就是百度开发
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务