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

34

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

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

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

如果我使用System.out.println(test[0]),它会打印“10”。我想要打印0x0A。

谢谢大家!

3个回答

69
System.out.println(Integer.toHexString(test[0]));

或者 (漂亮打印)

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

OR (漂亮打印)

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

4
其中,System.out.printf 可能是最好的选择。 - abyx
2
但是 Integer.toHexString 将打印 10 而不是 0x0A - Anirban Nag 'tintinmj'

9
for (int j=0; j<test.length; j++) {
   System.out.format("%02X ", test[j]);
}
System.out.println();

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

for (byte theByte : test)
{
  System.out.println(Integer.toHexString(theByte));
}

注意:test[1] = 0xFF; 这不会编译通过,因为你不能将255(FF)放入一个字节中,Java会想使用int类型。

你可以尝试这样做...

test[1] = (byte) 0xFF;

如果我在我的IDE附近,我会进行测试(如果我在我的IDE附近,我就不会在Stackoverflow上了)


你绝对可以执行以下操作: byte b = 255 & 0xFF; 然后在读取时, int calculation = (0xFF &b) + 5; 以读回255。 - Per Christian Henden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接