byte[] 轉Hex String
阿新 • • 發佈:2017-09-12
之間 bsp log cover subst 策略 arr static new
一、一個字符串轉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; }
byte[] 轉Hex String