第一种方式:
/**
* 字节数组转换成字符串发送
* @param 字节数组
* @return 十六进制字符串
*/
public static String bytesToHexString(byte[] bytes) {
StringBuilder result = new StringBuilder();
for (int i = 0; i < bytes.length; i++) {
String hexString = Integer.toHexString(bytes[i] & 0xff);
if (hexString.length() == 1) {
hexString = '0' + hexString;//由于字符串的不变性,每次+操作都会在内存中新建一个String对象,故此此种方式相比下面一种方式会产生多余的垃圾。
}
result.append(hexString.toUpperCase());
}
return result.toString();
}
第二种方式:
/**
* 字节数组转换成字符串发送
* @param 字节数组
* @return 十六进制字符串
*/
public static String bytesToHexString(byte[] bytes) {
StringBuilder result = new StringBuilder();
//采用String.format()的方式
for(byte b : bytes){
result.append(String.format("%02X", b));//把一个字节转换成16进制 %02X表示16进制大写 占2个字符 若长度为1 前面补0
}
return result.toString();
}