进制转换代码(2-16)

#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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.cgo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值