原文: https://www.programiz.com/java-programming/examples/convert-byte-array-hexadecimal

在此程序中,您将学习在 Java 中将字节数组转换为十六进制的不同技术。

示例 1:将字节数组转换为十六进制值

  1. public class ByteHex {
  2. public static void main(String[] args) {
  3. byte[] bytes = {10, 2, 15, 11};
  4. for (byte b : bytes) {
  5. String st = String.format("%02X", b);
  6. System.out.print(st);
  7. }
  8. }
  9. }

运行该程序时,输出为:

  1. 0A020F0B

在上面的程序中,我们有一个名为bytes的字节数组。 要将字节数组转换为十六进制值,我们遍历数组中的每个字节,并使用Stringformat()

我们使用%02X打印十六进制(X)值的两个位置(02)并将其存储在字符串st中。

对于大字节数组转换,这是相对较慢的过程。 我们可以使用下面显示的字节操作大大提高执行速度。


示例 2:使用字节操作将字节数组转换为十六进制值

  1. public class ByteHex {
  2. private final static char[] hexArray = "0123456789ABCDEF".toCharArray();
  3. public static String bytesToHex(byte[] bytes) {
  4. char[] hexChars = new char[bytes.length * 2];
  5. for ( int j = 0; j < bytes.length; j++ ) {
  6. int v = bytes[j] & 0xFF;
  7. hexChars[j * 2] = hexArray[v >>> 4];
  8. hexChars[j * 2 + 1] = hexArray[v & 0x0F];
  9. }
  10. return new String(hexChars);
  11. }
  12. public static void main(String[] args) {
  13. byte[] bytes = {10, 2, 15, 11};
  14. String s = bytesToHex(bytes);
  15. System.out.println(s);
  16. }
  17. }

该程序的输出与示例 1 相同。