byte[] 轉Hex String


一、一個字符串轉byte數組怎么轉?

byte[] byteArray = String.getBytes();

二、又想把生成的數組轉回字符串怎么辦?

String covertString = new String(byteArray);

以上的輕松愉快僅限於字符串之間互轉(適當的時候還要注意編碼格式)。

三、如果一個的數值byte[]數組怎么轉成字符串?例如:

byte[] byteArray = new byte[]{-60,60};

如果用new String(byteArray)直接轉,會丟失負數信息(畢竟char的取值范圍和byte的取值范圍不一樣)。

所以一個較好的策略是把byte信息轉成16進制的字符串,方便再從16進制字符串轉回byte數組。

3.1 byte[]轉成Hex String

public static String byteArrayToHexStr(byte[] byteArray) {
    if (byteArray == null) {
        return null;
    }
    char[] hexArray = "0123456789ABCDEF".toCharArray();
    char[] hexChars = new char[byteArray.length * 2];
    for (int j = 0; j < byteArray.length; j++) {
        int v = byteArray[j] & 0xFF;
        hexChars[j * 2] = hexArray[v >>> 4];
        hexChars[j * 2 + 1] = hexArray[v & 0x0F];
    }
    return new String(hexChars);
}

3.2 Hex String轉成byte[]

public static byte[] hexStrToByteArray(String str) {
    if (str == null) {
        return null;
    }
    if (str.length() == 0) {
        return new byte[0];
    }
    byte[] byteArray = new byte[str.length() / 2];
    for (int i = 0; i < byteArray.length; i++) {
        String subStr = str.substring(2 * i, 2 * i + 2);
        byteArray[i] = ((byte) Integer.parseInt(subStr, 16));
    }
    return byteArray;
}                

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM