十进制转任意进制:
#include <iostream> 
#include <vector>   
#include <string>   using namespace std; // 将十进制数转换为P进制形式的字符串
string toBase(int num, int base) {string result = ""; // 初始化结果字符串为空while (num > 0) { // 当num大于0时执行循环int digit = num % base; // 计算num除以base的余数char digitChar; // 定义字符变量用于表示余数对应的字符if (digit >= 10) { // 如果余数大于等于10digitChar = 'A' + digit - 10; // 将余数转换为对应的字母(大写)} else { // 否则余数为个位数digitChar = '0' + digit; // 将余数转换为对应的字符}result = digitChar + result; // 将当前字符添加到结果字符串的开头num /= base; // 更新num为num除以base的商}return result; // 返回转换后的P进制字符串
}int main() {cout << "请输入需要转换的数字x和进制数P:"; int x;cin >> x;int P; cin >> P; cout <<  toBase(x,P);return 0; 
}几个案例解释:
案例一:
-  用户输入: 用户输入两个值: x和P。在这个例子中,x为66,P为4。
-  调用 toBase函数: 函数toBase接受两个参数:要转换的十进制数num(这里是66)和目标进制数base(这里是4)。
-  循环计算: - 第一次循环: - 计算 66 % 4 = 2,余数为2。对应的字符是'2'。
- 66 / 4 = 16,商为16。更新- num为16。
 
- 计算 
- 第二次循环: - 计算 16 % 4 = 0,余数为0。对应的字符是'0'.
- 16 / 4 = 4,商为4。更新- num为4。
 
- 计算 
- 第三次循环: - 计算 4 % 4 = 0,余数为0。对应的字符是'0'。
- 4 / 4 = 1,商为1。更新- num为1。
 
- 计算 
- 第四次循环: - 计算 1 % 4 = 1,余数为1。对应的字符是'1'。
- 1 / 4 = 0,商为0,循环结束。
 
- 计算 
 由于 result是逆序构建的,结果字符串为'1002'。
- 第一次循环: 
-  输出结果: 将 toBase的结果输出至标准输出流。 最终结果为'1002',即66转为4进制的表示是'1002'。
案例二:
-  用户输入: 用户输入两个值: x和P。在这个例子中,x为666,P为24。
-  调用 toBase函数: 函数toBase接受两个参数:要转换的十进制数num(这里是666)和目标进制数base(这里是24)。
-  循环计算: - 第一次循环: - 计算 666 % 24 = 18,余数为18。对应的字符是'I'。
- 666 / 24 = 27,商为27。更新- num为27。
 
- 计算 
- 第二次循环: - 计算 27 % 24 = 3,余数为3。对应的字符是'3'。
- 27 / 24 = 1,商为1。更新- num为1。
 
- 计算 
- 第三次循环: - 计算 1 % 24 = 1,余数为1。对应的字符是'1'。
- 1 / 24 = 0,商为0,循环结束。
 
- 计算 
 由于 result是逆序构建的,结果字符串为'1318'。
- 第一次循环: 
-  输出结果: 将 toBase的结果输出至标准输出流。 最终结果为'1318',即666转为24进制的表示是'1318'。
案例三:
-  用户输入: 用户输入两个值: x和P。在这个例子中,x为999,P为36。
-  调用 toBase函数: 函数toBase接受两个参数:要转换的十进制数num(这里是999)和目标进制数base(这里是36)。
-  循环计算: - 第一次循环: - 计算 999 % 36 = 27,余数为27。对应的字符是'R'。
- 999 / 36 = 27,商为27。更新- num为27。
 
- 计算 
- 第二次循环: - 计算 27 % 36 = 27,余数为27。对应的字符是'R'。
- 27 / 36 = 0,商为0,循环结束。
 
- 计算 
 由于 result是逆序构建的,结果字符串为'RR'。
- 第一次循环: 
-  输出结果: 将 toBase的结果输出至标准输出流。 最终结果为'RR',即999转为36进制的表示是'RR'。
任意进制之间的转换:
#include <iostream>   
#include <vector>     
#include <string>     using namespace std;   // 将十进制数转换为P进制形式的字符串  
string toBase(int num, int base) {string result = ""; // 初始化结果字符串为空while (num > 0) { // 当num大于0时执行循环int digit = num % base; // 计算num除以base的余数char digitChar; // 定义字符变量用于表示余数对应的字符if (digit >= 10) { // 如果余数大于等于10digitChar = 'A' + digit - 10; // 将余数转换为对应的字母(大写)} else { // 否则余数为个位数digitChar = '0' + digit; // 将余数转换为对应的字符}result = digitChar + result; // 将当前字符添加到结果字符串的开头num /= base; // 更新num为num除以base的商}return result; // 返回转换后的P进制字符串
}// 将P进制数(以字符串形式给出)转换为十进制数  
int fromBase(const string& num, int base) {  int result = 0;  int power = 1;  for (int i = num.size() - 1; i >= 0; --i) {  char digitChar = num[i];  int digit = 0;  if (digitChar >= '0' && digitChar <= '9') {  digit = digitChar - '0';  } else if (digitChar >= 'A' && digitChar <= 'Z') {  digit = digitChar - 'A' + 10;  } else if (digitChar >= 'a' && digitChar <= 'z') {  digit = digitChar - 'a' + 10;  } else {  cerr << "Invalid character in input string!" << endl;  return -1; // 返回-1表示输入字符串中有无效字符  }  result += digit * power;  power *= base;  }  return result;  
}  int main() {  //仅仅在调用第二个函数 cout << "请输入需要转换的数字x(以字符串形式给出)和进制数P:";   string x;  cin >> x;  int P;   cin >> P;   // 检查进制数是否合法(应在2到36之间)  if (P < 2 || P > 36) {  cerr << "Invalid base! Base should be between 2 and 36." << endl;  return 1;  }  int decimalValue = fromBase(x, P);  if (decimalValue != -1) {  cout << "转换后的十进制数为: " << decimalValue << endl;  }  return 0;   
}