DataInputStream readByte 正在返回一个大值

DataInputStream readByte is returning a big value

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

DataInputStream.readByte() returns 一个 byte 有符号类型 。返回值可以是 negative

Integer.toHexString(intValue) returns 值的十六进制表示形式解释为 无符号 整数。

因此,正值(如 76、12)按您的预期打印,而负值在 two's complement representation 中打印(负值在 Java 中的表示方式)。

例如,fffffffe 的打印值是 -2 的 32 位(整数大小)二进制补码表示。


要正确打印字节值,请使用:

System.out.println(String.format("%02x", tmp));

请注意,这也会正确地用零填充打印值。