美文网首页
任意进制互转

任意进制互转

作者: BenjaminCool | 来源:发表于2020-01-07 22:23 被阅读0次

public class NumericConvertUtils {

/**
 * 在进制表示中的字符集合,0-Z分别用于表示最大为62进制的符号表示
 */
private static final char[] digits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
        'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
        'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
        'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};

/**
 * 将十进制的数字转换为指定进制的字符串
 *
 * @param number 十进制的数字
 * @param seed   指定的进制
 * @return 指定进制的字符串
 */
public static String toOtherNumberSystem(long number, int seed) {
    if (number < 0) {
        number = ((long) 2 * 0x7fffffff) + number + 2;
    }
    char[] buf = new char[32];
    int charPos = 32;
    while ((number / seed) > 0) {
        buf[--charPos] = digits[(int) (number % seed)];
        number /= seed;
    }
    buf[--charPos] = digits[(int) (number % seed)];
    return new String(buf, charPos, (32 - charPos));
}

/**
 * 将其它进制的数字(字符串形式)转换为十进制的数字
 *
 * @param number 其它进制的数字(字符串形式)
 * @param seed   指定的进制,也就是参数str的原始进制
 * @return 十进制的数字
 */
public static long toDecimalNumber(String number, int seed) {
    char[] charBuf = number.toCharArray();
    if (seed == 10) {
        return Long.parseLong(number);
    }

    long result = 0, base = 1;

    for (int i = charBuf.length - 1; i >= 0; i--) {
        int index = 0;
        for (int j = 0, length = digits.length; j < length; j++) {
            //找到对应字符的下标,对应的下标才是具体的数值
            if (digits[j] == charBuf[i]) {
                index = j;
            }
        }
        result += index * base;
        base *= seed;
    }
    return result;
}

}

相关文章

  • 任意进制互转

    public class NumericConvertUtils { }

  • 二进制丶八进制丶十进制丶十六进制转换 一篇就懂 ?

    本篇大纲: ①进制说明 ②二进制与其他进制互转 ③八进制与十进制互转 ④十六进制与十进制互转 ...

  • go 进制互转

    go 进制互转 十进制 <------> 十六进制

  • python 进制转换

    如何表示二进制 任意进制之间的转换 任意进制转换成二进制--bin 任意进制转换成十进制--int 3.任意进制转...

  • python 的进制转换

    十进制, 二进制相互转换 十进制转换为二进制 二进制转换为十进制 十进制, 八进制相互转换 十进制转换为八进制 八...

  • js的进制转换

    js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用 对象.toString()...

  • 序列化

    类 XML互转 和 类与二进制互转 TestSerilize 类 AssetsSerilize类 AssetsSe...

  • java 10 进制转16进制 简单办法

    /** 十进制与十六进制简单互转 **/ public class TenToHexDemo {private s...

  • 进制转换

    2进制 , 8进制 , 10进制 , 16进制 , 介绍 及 相互转换 及 快速转换的方法 为什么要使用进制数 数...

  • 常用小工具

    RGB与十六进制互转Keynote 代码高亮

网友评论

      本文标题:任意进制互转

      本文链接:https://www.haomeiwen.com/subject/diodactx.html