1.十进制转化为其他进制
这里可能将十进制转化为14或15进制,所以10用A,11用B表示,依次类推。
2.其他进制转化为10进制:
将其他进制下的数转化为10进制下的数,通常采用秦九韶算法。
上代码:
- #include
-
- 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;
- }
效果:
