Java中的进制转换

本文提供了一系列数字转换的方法,包括十进制到十六进制、二进制的转换,以及十六进制与二进制之间的相互转换等。同时,还介绍了如何将ASCII码byte数组转换成十六进制字符串,并提供了从不同进制字符串转换到十进制数字的方法。
摘要由CSDN通过智能技术生成

转载请注明出处:http://blog.csdn.net/u012532631/article/details/76083120

/**
     * 数字转十六进制字符串
     * 
     * @param d
     * @return
     * 测试   System.out.println(toHexStr(10));
     * 结果    a
     */
    public static String toHexStr(int d) {
        return Integer.toHexString(d);
    }

    /**
     * 数字转二进制字符串
     * 
     * @param d
     * @return
     * 
     * 测试    System.out.println(toBinary(10));
     * 结果   1010
     */
    public static String toBinary(int d) {
        return Integer.toBinaryString(d);
    }

    /**
     * 十进制字符串ASCII码byte数组转换成十六进制字符串
     * 
     * @param bytes
     * @return
     * 
     * 测试  System.out.println(decimalByteToHexStr("1234".getBytes()));
     * 结果  31 32 33 34 
     */
    public static String decimalByteToHexStr(byte[] bytes) {
        char[] hexArray = "0123456789ABCDEF".toCharArray();
        char[] hexChars = new char[bytes.length * 2];
        for (int j = 0; j < bytes.length; j++) {
            int v = bytes[j] & 0xFF;
            hexChars[j * 2] = hexArray[v >>> 4];
            hexChars[j * 2 + 1] = hexArray[v & 0x0F];
        }

        StringBuffer sb = new StringBuffer();
        // sb.append("[");
        for (int k = 0; k < hexChars.length; k += 2) {
            // sb.append(""+hexChars[k] + hexChars[k + 1] + ", ");
            sb.append("" + hexChars[k] + hexChars[k + 1] + " ");
        }
        // sb.append("]");
        return sb.toString();
    }


    /**
     * 十六进制字符串转十进制数字
     * @param d
     * @return
     * 测试  System.out.println(hexToDecimal("10"));
     * 结果  16
     */
    public static int hexToDecimal(String hex) {
        return Integer.parseInt(hex, 16);
    }

    /**
     * 十六进制字符串转二进制字符串
     * @param d
     * @return
     * 测试  System.out.println(hexToBinaryStr("10"));
     * 结果  10000
     */
    public static String hexToBinaryStr(String hex) {
        return Integer.toBinaryString(Integer.parseInt(hex, 16));
    }

    /**
     * 十六进制字符串转十进制byte数组
     * @param str
     * @return
     * 测试  System.out.println(Arrays.toString(HexStrToBytes("1010")));
     * 结果  [16, 16]
     */
    public static byte[] hexStrToBytes(String str)
    {
        //如果字符串长度不为偶数,则追加0
        if(str.length() % 2 !=0){
            str = "0"+str;
        }

        byte[] b = new byte[str.length() / 2];
        byte c1, c2;
        for (int y = 0, x = 0; x < str.length(); ++y, ++x)
        {
            c1 = (byte)str.charAt(x);
            if (c1 > 0x60) c1 -= 0x57;
            else if (c1 > 0x40) c1 -= 0x37;
            else c1 -= 0x30;
            c2 = (byte)str.charAt(++x);
            if (c2 > 0x60) c2 -= 0x57;
            else if (c2 > 0x40) c2 -= 0x37;
            else c2 -= 0x30;
            b[y] = (byte)((c1 << 4) + c2);
        }
        return b;
    }

    /**
     * 二进制形式字符串的数组转十六进制字符串 
     * @param d
     * @return
     * 测试  System.out.println(binaryToHexStr("10000"));
     * 结果  10
     */
    public static String binaryToHexStr(String hex){
        return Integer.toHexString(Integer.parseInt(hex, 2));
    }

    /**
     * 二进制形式字符串转十进制数字
     * @param d
     * @return
     * 测试  System.out.println(binaryToDecimal("10000"));
     * 结果  16
     */
    public static int binaryToDecimal(String hex){
        return Integer.parseInt(hex, 2);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值