BufferedWriter使用MSB 1编写char

时间:2013-04-19 05:11:00

标签: java hex bufferedreader

writer = new BufferedWriter(new OutputStreamWriter(System.out));
char[] test = new char[1];
test[0]=(char)128;
writer.write(test,0,1);
writer.flush();

使用此命令调用; java文件>出

然后使用十六进制编辑器检查“out”,我希望在文件的开头得到字节0x80并且没有跟随它。相反,我得到0x3F。 通过使用不同的东西(即64)执行相同的代码,我得到0x40的预期十六进制。

3 个答案:

答案 0 :(得分:0)

BufferedWriter是面向字符的流,因此您编写的字节会被编码为您在文件中看到的不同内容。使用旨在处理此类二进制数据的BufferedOutputStream

答案 1 :(得分:0)

在这种情况下,OutputStreamWriter使用平台的默认字符编码将字符转换为字节。如果要在文件中看到0x80(128),请使用new OutputStreamWriter(System.out, "ISO-8859-1");

答案 2 :(得分:0)

根据BufferedWriter的Java 6 API,它说,“如果没有缓冲,每次调用print()方法都会导致字符被转换为字节,然后立即写入文件,这可能是非常低效的。 “

有关相同内容的详情,请访问the link