进制转换工具类

/**
 * @param args
 */
/**
 * 将二进制转换成16进制
 *
 * @param buf
 * @return
 */
public static String parseByte2HexStr(byte[] buf) {
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < buf.length; i++) {
        String hex = Integer.toHexString(buf[i] & 0xFF);
        if (hex.length() == 1) {
            hex = '0' + hex;
        }
        sb.append(hex.toUpperCase());
    }
    return sb.toString();
}

/**
 * 将16进制转换为二进制
 *
 * @param hexStr
 * @return
 */
public static byte[] parseHexStr2Byte(String hexStr) {
    int temp = 2;
    if (hexStr.length() < 1) {
        return null;
    }
    byte[] result = new byte[hexStr.length() / temp];
    for (int i = 0; i < hexStr.length() / temp; i++) {
        int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16);
        int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16);
        result[i] = (byte) (high * 16 + low);
    }
    return result;
}

转换图解:

二进制与十进制之间的转换:

1.十进制转二进制

方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。

(具体用法如下图)


 2.二进制转十进制

方法为:把二进制数按权展开、相加即得十进制数。

二进制与八进制之间的转换

1.二进制转八进制

方法为:3位二进制数按权展开相加得到1位八进制数。(注意事项,3位二进制转成八进制是从右到左开始转换,不足时补0)。

(具体用法如下图)


2.八进制转成二进制

方法为:八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。

(具体用法如下图)


二进制与十六进制之间的转换

1.二进制转十六进制

方法为:与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)。

(具体用法如下图)


2.十六进制转二进制

方法为:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。

(具体用法如下图)


十进制与八进制与十六进制之间的转换

1.十进制转八进制或者十六进制有两种方法

第一:间接法—把十进制转成二进制,然后再由二进制转成八进制或者十六进制。

        无图;

2.第二:直接法—把十进制转八进制或者十六进制按照除8或者16取余,直到商为0为止。

(具体用法如下图)


3.八进制或者十六进制转成十进制

方法为:把八进制、十六进制数按权展开、相加即得十进制数。

(具体用法如下图)



十六进制与八进制之间的转换

  1. 八进制与十六进制之间的转换有两种方法

第一种:他们之间的转换可以先转成二进制然后再相互转换。

第二种:他们之间的转换可以先转成十进制然后再相互转换。

这里就不再进行图片用法解释。








猜你喜欢

转载自blog.csdn.net/qq_33352259/article/details/80730307