2

我正在尝试按字节读取一些文件。问题是 Java 向我显示的字节不同,我可以使用 Far hex 编辑器读取。

使用 Far 读取字节:00 00 00 17 00 00 00 29 00 00 00 99 00 00 00 9B

使用 Java 读取字节:0 0 0 17 0 0 0 29 0 0 0 22 0 0 0 3a

Java代码:

while ((line = (byte) _br.read()) != -1) {
    lines.add(line);
    System.out.println("lines = " + Integer.toHexString(line));
}
4

1 回答 1

1

您过早地将返回的整数转换read()为字节。这会导致溢出,并可能阻止 -1 文件结束检查工作(在您当前的问题之上)。它说返回的值在 0 到 65535 之间的文档(不能由字节变量处理)。在 java 中,字节是有符号的 8 位值,因此只要值大于 0x7F,就会出现问题。将变量类型更改line为 int 并重试。

于 2012-05-21T13:44:46.347 回答