Hex String与 byte[] 之间的转换
Android BLE开发时,与蓝牙设备交互的数据都是byte[],通信协议经常出现0x01/0xFE这类Hex String,在打印这些数据时,将byte[]转为Hex String可以很明了的和通信协议中的数据进行对照.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
public static byte[] toByteArray(String hexString) { if (TextUtils.isEmpty(hexString)){ return null; } hexString = hexString.toLowerCase(); final byte[] byteArray = new byte[hexString.length() >> 1]; int index = 0; for (int i = 0; i < hexString.length(); i++) { if (index > hexString.length() - 1) return byteArray; byte highDit = (byte) (Character.digit(hexString.charAt(index), 16) & 0xFF); byte lowDit = (byte) (Character.digit(hexString.charAt(index + 1), 16) & 0xFF); byteArray[i] = (byte) (highDit << 4 | lowDit); index += 2; } return byteArray; }
public static String toHexString(byte[] byteArray) { final StringBuilder hexString = new StringBuilder(""); if (byteArray == null || byteArray.length <= 0){ return null; } for (int i = 0; i < byteArray.length; i++) { int v = byteArray[i] & 0xFF; String hv = Integer.toHexString(v); if (hv.length() < 2) { hexString.append(0); } hexString.append(hv); } return hexString.toString().toLowerCase(); }
|