答案 0 :(得分:2)
DataInputStream.readByte()
会返回byte
,这是签名类型。返回的值可以是否定。
Integer.toHexString(intValue)
返回被解释为 无符号 整数的值的十六进制表示。
因此,正值(如76,12)按预期打印,而负值则以two's complement representation打印(负值以Java表示)。
例如,fffffffe
的打印值是-2
的32位(整数)二进制补码表示。
要正确打印字节值,请使用:
System.out.println(String.format("%02x", tmp));
请注意,这也将使用零正确地左键打印值。