2

一个伙伴和我正在做一项任务,其中涉及将字节写入文件。通常我们会使用类似 a 的东西,FileOutputStream但是这个赋值明确要求我们将数据(在这种情况下,以字节为单位)写出到标准输出。不幸的是,它没有按预期工作。

例如,编写以下代码:

System.out.write(144); // write the byte 0x90, which is 144 as an int
System.out.flush();

...实际上将与 63 对应的字节作为整数而不是 144 写入标准输出。

我们在使用 FileOutputStream 时似乎没有遇到这个问题,但正如我之前所说,任务希望我们写入标准输出。有任何想法吗?

提前致谢。

4

1 回答 1

0

当我在 Eclipse 控制台中看到字符 0x3F (63) 而不是 0x90 时,我也很惊讶。正如 Miguel Prz 所建议的,问题与控制台编码有关。默认情况下,它设置在 cp1252 上,似乎将 0x90 转换为 0x3F。您可以做的最好的事情是设置 ISO-8859-1 并重定向到一个文件(见截图)。
控制台也尝试显示字符,但是当我复制粘贴到十六进制编辑器时,我没有得到正确的结果。

但是,在这种特定情况下,我建议从 Windows 或 Linux 控制台启动您的程序并将输出重定向到文件。因此,您避免了任何编码转换,而是将二进制数据直接写入文件。ISO-8859-1 适用于 0x90,但可能会给其他字符带来问题。此外,在标准输出(Eclipse 控制台或其他)中显示所有字节(0x00 到 0xFF)几乎没有意义。

在此处输入图像描述

于 2013-04-29T18:39:03.833 回答