进制转换 Java 代码

 

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

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();
    }

 

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

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

posted @   有点成长  阅读(118)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示