【发布时间】:2011-05-07 00:02:46
【问题描述】:
我正在使用 Java 从 SNES ROM 读取数据。我正在打开一个流并将字节读入一个数组:
InputStream stream = open("foo.rom");
final int startingSize = stream.available();
byte[] data = new byte[startingSize];
final int numberRead = stream.read(data, 0, startingSize);
在ROM中,我有这个值:
E4 2B 00 02 03 00 FF 3A 00 83
228 43 0 2 3 0 255 58 0 131(十进制)
但是,我的代码表现得很奇怪。在设置了一些调试语句后,我在使用 String.valueOf(data[ref]) 打印时出现了这种模式:
-28 43 0 2 3 0 -1 58 0 -125
(ROM 中的这个地址是数据出现的第一个地址,但我注意到程序中其他地方的值不正确。)
据我所知,我的 Java 字节数组不尊重十六进制数据。我该如何设置我的字节数组?
【问题讨论】:
-
Javadoc 中有一个特定的警告,反对使用
available()的方式与您在此处使用的方式完全相同。