#include <iostream> // 引入输入输出流库
#include <math.h> // 引入数学函数库
#include <string.h> // 引入字符串处理库
using namespace std; // 使用标准命名空间
int main() {
int n, m, count = 0, len, i, t = 0, k; // 定义变量
char a[1000], b[1000]; // 定义字符数组用于存储输入和转换结果
cin >> n >> m; // 输入原始进制和目标进制
cin >> a; // 输入要转换的数
len = strlen(a); // 获取输入的数的位数
k = len - 1;
for (i = 0; i < len; i++)
{ // 遍历输入的数的每一位
if (a[i] >= '0' && a[i] <= '9')
{ // 如果当前位是数字
t = a[i] - '0'; // 将字符转换为对应的数字
}
else
{ // 如果当前位是大写字母
t = a[i] - 'A' + 10; // 将字符转换为对应的数字(大于9的情况)
}
count += t * pow(n, k); // 将当前位的值乘以n的k次方,并累加到count中
k--; // k递减,表示下一位的权重减小
}
len = 0;
while (count > 0)
{ // 循环实现10进制向m进制的转换
t = count % m; // 取余数
if (t > 9)
{ // 如果余数大于9,需要转换为大写字母
b[len] = 'A' + (t - 10);
}
else
{ // 如果余数小于等于9,直接转换为数字字符
b[len] = '0' + t;
}
len++; // 长度递增,表示转换结果的长度增加
count /= m; // 除以m,继续进行下一轮转换
}
for (i = len - 1; i >= 0; i--)
{ // 倒序输出转换结果
cout << b[i];
}
return 0; // 程序结束
}
进制转换代码(2-16)
最新推荐文章于 2024-08-12 16:55:46 发布