十进制与其它进制转换

C语言笔记之二进制:
https://blog.csdn.net/weixin_44718794/article/details/103965363

十进制转其它进制

#include <iostream>		//十进制与其它进制转换
#include <algorithm>
#include <string>
using namespace std;

string HEX = "0123456789abcdef";	//16进制字符
string DEC_k(long long DEC, int k)	//10进制转变为K进制 (2<= k <=16)
{
	string knum;
	while (DEC)
	{
		knum += HEX[DEC % k];
		DEC /= k;
	}
	reverse(knum.begin(), knum.end());
	return knum;
}

其它进制转十进制

int to_int(char ch)
{
	if(ch >= '0' && ch <= '9')
		return ch - 48;
	else
		return ch - 87;	//a的ASCII码为97
}
long long k_DEC(string knum, int k)	//将k进制转为10进制 (2<= k <=16)
{
	long long DEC = 0;
	int len = knum.length();
	for (int i = 0; i < len; i++)
		DEC += to_int(knum[i]) * pow(k, len - i - 1);
	return DEC;
}
int main()
{
	long long num;
	string knum;
	int k;
	cin >> num >> k;	//输入10进制数与要转换的进制k
	knum = DEC_k(num, k);
	cout << k << "进制数为:" << endl;
	cout << knum << endl;

	cout << "从新转换为10进制数:" << endl;
	cout << k_DEC(knum, k) << endl;

	system("pause");
	return 0;
}

运行结果

二进制

input:
1235 2
output:
2进制数为:
10011010011
从新转换为10进制数:
1235
请按任意键继续. . .

八进制

input:
231654 8
output:
8进制数为:
704346
从新转换为10进制数:
231654
请按任意键继续. . .

十六进制

input:
312624654 16
output:
16进制数为:
12a2460e
从新转换为10进制数:
312624654
请按任意键继续. . .

其它进制

十三进制

input:
13215231 13
output:
13进制数为:
2979183
从新转换为10进制数:
13215231
请按任意键继续. . .

七进制

input:
13215612 7
output:
7进制数为:
220221324
从新转换为10进制数:
13215612
请按任意键继续. . .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值