杰瑞科技汇

Java十六进制数组如何转字符串?

Java 十六进制数组转字符串

在 Java 中,将十六进制字节数组转换为字符串有几种常见方法,以下是几种实现方式:

Java十六进制数组如何转字符串?-图1
(图片来源网络,侵删)

方法1:使用 Integer.toHexString()

public static String hexArrayToString(byte[] hexArray) {
    StringBuilder sb = new StringBuilder();
    for (byte b : hexArray) {
        sb.append(String.format("%02X", b));
    }
    return sb.toString();
}

方法2:使用 BigInteger

public static String hexArrayToString(byte[] hexArray) {
    BigInteger bigInt = new BigInteger(1, hexArray);
    return bigInt.toString(16);
}

方法3:使用 Apache Commons Codec (推荐)

如果项目中可以使用第三方库,Apache Commons Codec 提供了最简洁的方法:

import org.apache.commons.codec.binary.Hex;
public static String hexArrayToString(byte[] hexArray) {
    return Hex.encodeHexString(hexArray);
}

方法4:处理带0x前缀的数组

如果数组中的每个元素都是带"0x"前缀的十六进制字符串:

public static String hexArrayToString(String[] hexArray) {
    StringBuilder sb = new StringBuilder();
    for (String hex : hexArray) {
        // 去掉0x前缀(如果有)
        String cleanHex = hex.startsWith("0x") ? hex.substring(2) : hex;
        sb.append(cleanHex);
    }
    return sb.toString();
}

使用示例

public static void main(String[] args) {
    byte[] bytes = {0x48, 0x65, 0x6C, 0x6C, 0x6F}; // "Hello"的十六进制表示
    // 方法1
    System.out.println(hexArrayToString(bytes)); // 输出: 48656C6C6F
    // 方法3 (需要添加commons-codec依赖)
    // System.out.println(Hex.encodeHexString(bytes));
}

注意事项

  1. 对于字节数组,方法1和方法2都能正确处理,但方法1更直观可控
  2. 如果需要小写输出,可以将%02X改为%02x
  3. 对于大数组,方法1的性能通常更好
  4. 方法2会自动处理前导零,但可能不适合某些特定场景

选择哪种方法取决于你的具体需求和项目环境,如果可以,推荐使用Apache Commons Codec的方法,因为它简洁且经过充分测试。

Java十六进制数组如何转字符串?-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇