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
请按任意键继续. . .