1. 引言

Java 提供了多种处理字节数组(byte[])的方式,这在处理二进制数据时至关重要。虽然使用十进制值初始化字节数组很直接,但十六进制表示法能让二进制数据的表达更直观、更易读。本文将探讨如何在 Java 中使用十六进制表示法初始化字节数组,并分析其优势和应用场景。

2. 理解字节数组

在 Java 中,字节数组用于存储字节序列。每个字节可容纳一个 8 位有符号值(范围:-128 到 127)。字节数组常用于:

  • 文件 I/O 操作
  • 网络通信
  • 密码学函数

3. 字节数组的基本初始化

先用十进制值初始化字节数组:

private static final Logger logger = LoggerFactory.getLogger(LiteralSyntaxForByteArraysUsingHexNotation.class);

public static void initializeByteArrayWithDecimal() {
    byte[] byteArray = {10, 20, 30, 40, 50};
    for (byte b : byteArray) {
        logger.info("{}", b);
    }
}

输出结果:

[main] INFO com.baeldung.literalsyntaxforbytearraysusinghexnotation.LiteralSyntaxForByteArraysUsingHexNotation - 10
[main] INFO com.baeldung.literalsyntaxforbytearraysusinghexnotation.LiteralSyntaxForByteArraysUsingHexNotation - 20
[main] INFO com.baeldung.literalsyntaxforbytearraysusinghexnotation.LiteralSyntaxForByteArraysUsingHexNotation - 30
[main] INFO com.baeldung.literalsyntaxforbytearraysusinghexnotation.LiteralSyntaxForByteArraysUsingHexNotation - 40
[main] INFO com.baeldung.literalsyntaxforbytearraysusinghexnotation.LiteralSyntaxForByteArraysUsingHexNotation - 50

4. 使用十六进制表示法初始化字节数组

十六进制表示法更契合二进制数据的处理需求:

每个十六进制数字代表 4 位,两个十六进制数字即表示一个字节
Java 中使用 0x 前缀表示十六进制值

用十六进制初始化相同字节数组:

public static void initializeByteArrayWithHex() {
    byte[] byteArray = {0x0A, 0x14, 0x1E, 0x28, 0x32};
    for (byte b : byteArray) {
        logger.info("0x{:02X}", b);
    }
}

输出结果:

[main] INFO com.baeldung.literalsyntaxforbytearraysusinghexnotation.LiteralSyntaxForByteArraysUsingHexNotation - 0x0A
[main] INFO com.baeldung.literalsyntaxforbytearraysusinghexnotation.LiteralSyntaxForByteArraysUsingHexNotation - 0x14
[main] INFO com.baeldung.literalsyntaxforbytearraysusinghexnotation.LiteralSyntaxForByteArraysUsingHexNotation - 0x1E
[main] INFO com.baeldung.literalsyntaxforbytearraysusinghexnotation.LiteralSyntaxForByteArraysUsingHexNotation - 0x28
[main] INFO com.baeldung.literalsyntaxforbytearraysusinghexnotation.LiteralSyntaxForByteArraysUsingHexNotation - 0x32

5. 使用十六进制表示法的优势

可读性提升
十六进制表示更紧凑,熟悉二进制数据的开发者更容易解读,减少误读风险

字节边界对齐
十六进制与字节边界完美对齐,便于理解和操作单个字节

底层编程通用性
在系统编程、网络通信、密码学等领域,十六进制是二进制数据的标准表示法

6. 实际应用场景

十六进制表示法在以下场景特别实用:

  • 文件 I/O 操作
    处理文件头和二进制文件格式时(如文件类型标识的魔数)
  • 网络通信
    表示网络数据包头部(如 TCP 包头)
  • 密码学函数
    表示密钥、哈希值等加密数据

7. 总结

使用十六进制表示法初始化字节数组,能显著提升二进制数据的可读性和直观性,尤其适用于网络通信、文件 I/O 和密码学领域。这种表示法不仅能减少错误,还能让代码更符合底层编程的通用实践。

完整代码示例可在 GitHub 获取


原始标题:Literal Syntax for byte[] Arrays Using Hex Notation | Baeldung