近期的一个BLE蓝牙项目要读取硬件发送过来的比特流数据,我们需要将比特流数据线存放到字节数组中,再将字节数组转化为16进制字符串输出。
字节数组转化为16进制字符串输出的程序如下:
- /**
- * 方式三
- *
- * @param bytes
- * @return
- */
- public static String bytes2hex03(byte[] bytes)
- {
- final String HEX = "0123456789abcdef";
- StringBuilder sb = new StringBuilder(bytes.length * 2);
- for (byte b : bytes)
- {
- // 取出这个字节的高4位,然后与0x0f与运算,得到一个0-15之间的数据,通过HEX.charAt(0-15)即为16进制数
- sb.append(HEX.charAt((b >> 4) & 0x0f));
- // 取出这个字节的低位,与0x0f与运算,得到一个0-15之间的数据,通过HEX.charAt(0-15)即为16进制数
- sb.append(HEX.charAt(b & 0x0f));
- }
- return sb.toString();
- }