#include using namespace std; //函数:r进制转换成10进制 int rToTen(string n, int r) { //将r进制转为10进制,n是该r进制的字符串表示 int len = n.length(); int ans = 0; int i = 0; while (i < len) { ans *= r; if (n[i] >= '0' && n[i] <= '9') ans += n[i] - '0'; if (n[i] >= 'A' && n[i] <= 'Z') ans += n[i] - 'A' + 10 ; if (n[i] >= 'a' && n[i] <= 'z') ans += n[i] - 'a' + 10 + 26; i++; } return ans; } //函数:十进制转任意进制 string tenToR(int n, int r) { if (n == 0) return "0"; //十进制n转r进制 ,返回字符串s string str = ""; stack s; while (n) { s.push(n % r); n = n / r; } while (!s.empty()) { switch (s.top()) { case 10: str += 'A'; break; case 11: str += 'B'; break; case 12: str += 'C'; break; case 13: str += 'D'; break; case 14: str += 'E'; break; case 15: str += 'F'; break; default: str += s.top() + '0'; } s.pop(); } return str; } int main() { //cout << rToTen("10010", 2) << endl; //cout << tenToR(18, 2) << endl; //15进制转10进制 //cout << rToTen("10", 15) << endl; //正正反反. cout << tenToR(rToTen("23456", 15), 18) << endl; }