我正在尝试用 java 编写一个 Chip8 模拟器,我遇到了一个关于readAllBytes
Java 函数的问题Files
。当我将用于测试的 ROM 中的字节加载到模拟器的“内存”数组中时,我尝试打印这些字节以查看它们是否正确进入内存。我曾经Integer.toHexString
将这些字节视为十六进制值,并将它们与我使用十六进制编辑器加载的实际文件进行比较,但它给我的输出很奇怪:
文件的第一个字节:
00 e0 a3 4c
测试输出:
0 ffffffe0 ffffffa3 4c
代码:
public void loadToMem(byte[] program) {
for(int i = 0; i < program.length; i++) {
this.memory[i+512] = program[i];
System.out.println(Integer.toHexString(this.memory[i+512]));
}
this.initializeComponents();
}
这些值只是Integer.toHexString
给出的表示中的一个错误,并且这些值正在正确加载,还是它们真的被错误地加载了?为什么用 f 填充?