1.十进制转化为其他进制
这里可能将十进制转化为14或15进制,所以10用A,11用B表示,依次类推。
2.其他进制转化为10进制:
将其他进制下的数转化为10进制下的数,通常采用秦九韶算法。
上代码:
#include <bits/stdc++.h>
using namespace std;
char get(int x)
{
if (x <= 9)return x + '0';
else return x - 10 + 'A';
}
string base(int x, int b)//将十进制数x转化为b进制数
{
string res;
while (x)
{
res += get(x % b);//余数可能超过9,所以特殊处理一下
x /= b;
}
reverse(res.begin(), res.end());//注意顺序,所以要翻转字符串
return res;
}
int uget(char x)
{
if (x <= '9')return x - '0';
else return x - 'A' + 10;
}
int base10(string x, int b)//将b进制下的x转化为10进制数
{
int res = 0;
for (auto t : x)
{
res = res * b + uget(t);//可能超过9,所以特殊处理一下
}
return res;
}
int main()
{
int num = 12312;
int b = 13;
string s = base(num, b);
cout << "翻转前:" << num << endl;
cout << "翻转后:" << s << endl;
int a = base10(s, b);
cout << "还原:" << a << endl;
return 0;
}
效果: