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;
}
效果: