如何使用 System.out.println 以十六进制打印字节?

Posted

技术标签:

【中文标题】如何使用 System.out.println 以十六进制打印字节?【英文标题】:How to print bytes in hexadecimal using System.out.println? 【发布时间】:2010-12-17 09:48:35 【问题描述】:

我已经声明了一个字节数组(我正在使用 Java):

byte test[] = new byte[3];
test[0] = 0x0A;
test[1] = 0xFF;
test[2] = 0x01;

如何打印存储在数组中的不同值?

如果我使用 System.out.println(test[0]) 它将打印“10”。我希望它打印 0x0A

谢谢大家!

【问题讨论】:

【参考方案1】:
byte test[] = new byte[3];
test[0] = 0x0A;
test[1] = 0xFF;
test[2] = 0x01;

for (byte theByte : test)

  System.out.println(Integer.toHexString(theByte));

注意:测试[1] = 0xFF;这不会编译,你不能将 255 (FF) 放入一个字节,java 会想要使用一个 int。

你也许可以做到……

test[1] = (byte) 0xFF;

我会测试我是否在我的 IDE 附近(如果我在我的 IDE 附近,我就不会在 *** 上)

【讨论】:

你绝对可以做 byte b = 255 & 0xFF;然后在读取时 int 计算 = (0xFF &b) + 5;回读 255【参考方案2】:
System.out.println(Integer.toHexString(test[0]));

OR (漂亮的印刷品)

System.out.printf("0x%02X", test[0]);

OR (漂亮的印刷品)

System.out.println(String.format("0x%02X", test[0]));

【讨论】:

在所有这些中,System.out.printf 可能是最好的主意。 但是Integer.toHexString 将打印10 而不是0x0A【参考方案3】:
for (int j=0; j<test.length; j++) 
   System.out.format("%02X ", test[j]);

System.out.println();

【讨论】:

以上是关于如何使用 System.out.println 以十六进制打印字节?的主要内容,如果未能解决你的问题,请参考以下文章

使用 System.out.println() 的目的是啥 [关闭]

Scala 中的 println 与 System.out.println

记录器与 System.out.println

在eclipse中, 如何快速输入(快捷键)System.out.println();

IDEA中如何查看System.out.println的输出

如何简化System.out.println