java字节数组转换成十六进制字符串的2种方式比较说明

第一种方式:

/**
 * 字节数组转换成字符串发送
 * @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();
}

猜你喜欢

转载自blog.csdn.net/u014795242/article/details/78958181