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));
请注意,这也会正确地用零填充打印值。
我正在创建一个 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));
请注意,这也会正确地用零填充打印值。