首页 > 编程语言 >进制转换 Java 代码

进制转换 Java 代码

时间:2023-02-26 15:23:08浏览次数:38  
标签:radix Java 进制 int chars result Integer 代码

 

一、其他进制字符串转成十进制数字

jdk提供的方法:

    Integer.parseInt(String str, int radix); // radix 默认为 10,可不输入

自己写的方法:

    /**
     * 其他进制转换为十进制数字
     *
     * @param str   要转换的进制字符串
     * @param radix 要转换的进制
     * @return 十进制数字
     */
    public static int parseInt(String str, int radix) {
        // 默认 str 是正常数字
        char[] chars = str.toCharArray();
        boolean negative = chars[0] == '-';
        int result = 0;
        int i = chars[0] == '-' || chars[0] == '+' ? 1 : 0;
        for (; i < chars.length; i++) {
            if (result > Integer.MAX_VALUE / radix ||
                    (result == Integer.MAX_VALUE / radix && chars[i] - '0' > Integer.MAX_VALUE % radix)) {
                // 数字大小越界
            }
            result *= radix;
            result += Character.digit(chars[i], radix);
        }
        return negative ? -result : result;
    }

 

二、十进制数字转成其他进制

jdk提供的方法:

    Integer.toBinaryString(int i); // 转为二进制
    Integer.toOctalString(int i);  // 转为八进制
    Integer.toHexString(int i);    // 转为十六进制

 自己写的方法:只适合正数,负数待完善。

/**
     * 正数十进制转其他进制
     *
     * @param n     十进制数组
     * @param radix 要转换成的进制
     * @return 转换后的字符串
     */
    public static String toBinary(int n, int radix) {
        // chars 数组可定义为常量
        char[] chars = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
        StringBuilder sb = new StringBuilder();
        while (n > 0) {
            sb.append(chars[n % radix]);
            n /= radix;
        }
        return sb.reverse().toString();
    }

 

三、二进制、八进制、十六进制互相转换

可以先转成十进制,再转换成对应进制。

标签:radix,Java,进制,int,chars,result,Integer,代码
From: https://www.cnblogs.com/luwei0424/p/17156763.html

相关文章