DataInputStream readByte返回一个很大的值

时间:2017-01-05 09:27:33

标签: java file byte datainputstream

我正在创建一个Chip-8模拟器,要求您以字节为单位读取虚拟rom文件。我有这个代码调用readByte方法。如果你看一下打印出的值,其中一些是常规字节,其中一些是疯狂的。enter image description here

1 个答案:

答案 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));

请注意,这也将使用零正确地左键打印值。