进制转换算法

本文介绍了一种将m进制整数转换为n进制整数的方法,通过两步实现:首先将m进制数转换为十进制数,然后将得到的十进制数转换为n进制数。文中提供了具体的算法实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进制转换

进制转换算法可以将m进制的整数mv转为n进制的整数nv。
本文的算法显然不是时间复杂度最优的算法,但是易于理解。
思路主要是:
m进制–> 10进制 —> n进制

m–>10

int num = 745; //需要转换的数
String value = num + "";
int temp = 0;
while (value.length() > 0) {
    int i = Integer.parseInt(value.substring(0, 1));
    value = value.substring(1);
    temp = (int) (temp + i * Math.pow(8, value.length()));
}
System.out.println(temp);

m–>10算法是比较简单的,转成字符串之后,依次取出每个字符,乘以相对应的权重再求和即可。

10–>n

int num = 485; //需要转换的数
String result = "";
while (num > 8) {
    result = num % 8 + result;
    num = num / 8;
}
result = num + result;
System.out.println(result);

10–>n的算法大致是:

2456/8=307,余0;
307/8=38,余3;
38/8=4,余6;
4/8=0,余4。
将所有余数倒序相连,得到结果:4630。

m–>n算法

将以上两个过程结合,可以得到任意进制到任意进制之间的转换算法。

public void m2n(long v, int from, int to) {
    String mValue = v + ""; //m进制的字符串
    long temp = 0;//中间的十进制值

    while (mValue.length() > 0) {
        int i = Integer.parseInt(mValue.substring(0, 1));
        mValue = mValue.substring(1);
        temp = (long) (temp + i * Math.pow(from, mValue.length()));
    }

    String nValue = ""; //n进制字符串
    while (temp > to) {
        nValue = temp % to + nValue;
        temp = temp / to;
    }
    nValue = temp + nValue;
    System.out.println(nValue);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值