JAVA中的进制转换

JAVA中的进制转换,第1张

JAVA中的进制转换 JAVA中的进制转换 自己写的转换代码 十六进制转二进制

把十六进制拆分成一个字符,在把每个字符转化为对应的二进制数

static String[] bin = {"0000", "0001", "0010", "0011", 
                       "0100", "0101", "0110", "0111", 
                       "1000", "1001", "1010", "1011",
                       "1100", "1101", "1110", "1111"};

public static String hexToDecimal(String x) {
        char[] str = x.toCharArray();
        StringBuilder res = new StringBuilder();
        for (int i = 0; i < x.length(); i++) {
            res.append(transform(str[i]));
        }
        return res.toString();
    }

    
    public static String transform(char ch) {
        String result = "";
        switch (ch) {
            case '0':
                result = bin[0];
                break;
            case '1':
                result = bin[1];
                break;
            case '2':
                result = bin[2];
                break;
            case '3':
                result = bin[3];
                break;
            case '4':
                result = bin[4];
                break;
            case '5':
                result = bin[5];
                break;
            case '6':
                result = bin[6];
                break;
            case '7':
                result = bin[7];
                break;
            case '8':
                result = bin[8];
                break;
            case '9':
                result = bin[9];
                break;
            case 'A':
                result = bin[10];
                break;
            case 'B':
                result = bin[11];
                break;
            case 'C':
                result = bin[12];
                break;
            case 'D':
                result = bin[13];
                break;
            case 'E':
                result = bin[14];
                break;
            case 'F':
                result = bin[15];
                break;
            default:
                break;
        }
        return result;
    }
二进制转八进制
static String[] oct = {"0", "1", "2", "3", "4", "5", "6", "7"};

    public static String binaryToOctal(String str) {
        if (str.length() % 3 == 1) {
            str = "00" + str;
        }
        if (str.length() % 3 == 2) {
            str = "0" + str;
        }
        StringBuilder res = new StringBuilder();
        int begin = 0, end = 3;
        while (end <= str.length()) {
            String substring = str.substring(begin, end);
            switch (substring) {
                case "000":
                    res.append(oct[0]);
                    break;
                case "001":
                    res.append(oct[1]);
                    break;
                case "010":
                    res.append(oct[2]);
                    break;
                case "011":
                    res.append(oct[3]);
                    break;
                case "100":
                    res.append(oct[4]);
                    break;
                case "101":
                    res.append(oct[5]);
                    break;
                case "110":
                    res.append(oct[6]);
                    break;
                case "111":
                    res.append(oct[7]);
                    break;
                default:
                    break;
            }
            begin = begin + 3;
            end = end + 3;
        }
        return res.toString();
    }

使用Integer
public static void main(String[] args) {
    
        System.out.println("=======Integer=======");
    
        // 十进制转二进制
        String bin01 = Integer.toBinaryString(10);
        System.out.println("十进制: 10--->二进制: " + bin01);
    
        // 十进制转八进制
        String oct01 = Integer.toOctalString(10);
        System.out.println("十进制: 10--->八进制: " + oct01);
    
        // 十进制转十六进制
        String hex01 = Integer.toHexString(10);
        System.out.println("十进制: 10--->十六进制: " + hex01);
    
        // 八进制转十进制
        Integer decimal01 = Integer.valueOf("12", 8);
        System.out.println("八进制: 12--->十进制: " + decimal01);
    
        // 十六进制转化为十进制
        Integer decimal02 = Integer.valueOf("a", 16);
        System.out.println("十六进制: a--->十进制: " + decimal02);
    }

运行截图:

当把十六进制转化为十进制时,如果数太大int容纳不下就会报错!可以使用下面一种方法解决。

使用BigInteger
public static void main(String[] args) {	
    
		System.out.println("=======BigInteger=======");
    
        // 八进制转十进制
        BigInteger decimal03 = new BigInteger("12", 8);
        System.out.println("八进制: 12--->十进制: " + decimal03);
    
        // 十六进制转化为十进制   C9DAB2B36C   --->   866957570924
        BigInteger decimal04 = new BigInteger("C9DAB2B36C", 16);
        System.out.println("十六进制: C9DAB2B36C--->十进制: " + decimal04);

        // 十进制转二进制
        String bin02 = decimal03.toString(2);
        System.out.println("十进制: 10--->二进制: " + bin02);
    
        // 十进制转八进制
        String oct02 = decimal03.toString(8);
        System.out.println("十进制: 10--->八进制: " + oct02);
    
        // 十进制转十六进制
        String hex02 = decimal03.toString(16);
        System.out.println("十进制: 10--->十六进制: " + hex02);
}

运行截图:

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5697073.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存