org.apache.commons.codec Hex.encodeHexString(Byte[] bytes)byte[]轉16進制字符串

org.apache.commons.codec包的Hex.encodeHexString(Byte[] bytes)可將byte[]轉爲16進制字符串

    @Test
    public void codecTest() {
        String str = "Hello World";
        System.out.println("hexString:" + Hex.encodeHexString(str.getBytes()));
    }

sout: hexString:48656c6c6f20576f726c64

    @Test
    public void toHexStringTest() {
        StringBuilder stringBuilder = new StringBuilder("");
        String str = "Hello World";
        byte[] src = str.getBytes();

        for (int i = 0; i < src.length; i++) {
            int v = src[i] & 0xFF;
            String hv = Integer.toHexString(v);
            if (hv.length() < 2) {
                stringBuilder.append(0);
            }
            stringBuilder.append(hv);
        }
        System.out.println("hexString:" + stringBuilder.toString());
    }

sout: hexString:48656c6c6f20576f726c64
int v = src[i] & 0xFF;
當爲負數時需要& 0xFF,因爲java的二進制採用的是補碼形式

1byte=8bits(對應16進制兩位)

過程分析:
String s = “H”;
UTF-8編碼中H對應72
10進制72 對應 16進制48

Hex.encodeHexString("H".getBytes()));//sout: 48
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章