java 二進位制資料與16進位制字串相互轉化
阿新 • • 發佈:2019-01-07
二進位制資料一般輸入的格式是0x45, 0x3a, 0xc3, 這種資料格式看起來是16進位制的字串,但是實際上在儲存的時候每個都對應一個位元組,比如0x45的二進位制位元組就是0100 0101,對應的16進位制字串就是0x45。實際程式設計過程中,經常遇到這兩種格式的相互轉化,在此記錄一下程式碼。
二進位制資料轉化為16進位制字串(中間加的‘:’還有‘;’是為了檢視下標,也可以自行去掉):
16進位制字串轉化為二進位制資料:public static String bytesToHexString(byte[] src){ StringBuilder stringBuilder = new StringBuilder(); if (src == null || src.length <= 0) { return null; } for (int i = 0; i < src.length; i++) { int v = src[i] & 0xFF; String hv = Integer.toHexString(v); stringBuilder.append(i + ":"); if (hv.length() < 2) { stringBuilder.append(0); } stringBuilder.append(hv + ";"); } return stringBuilder.toString(); }
public static byte[] hexStringToByte(String hex) { int len = (hex.length() / 2); byte[] result = new byte[len]; char[] achar = hex.toCharArray(); for (int i = 0; i < len; i++) { int pos = i * 2; result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1])); } return result; } private static byte toByte(char c) { byte b = (byte) "0123456789abcdef".indexOf(c); return b; }