【问题标题】:How to print bytes in hexadecimal using System.out.println?如何使用 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

谢谢大家!

【问题讨论】:

    标签: java system byte


    【解决方案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 附近,我就不会在 Stackoverflow 上)

    【讨论】:

    • 你绝对可以做 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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-22
      • 2023-04-07
      • 1970-01-01
      • 2013-01-18
      • 2022-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多