问题写入0xFF到文件

我正在尝试使用PrintStream在java中写入0xFF文件。 当我用Hex编辑器打开它时,其他值会正确写入文件,但假设显示0xFF的值改为0xC3BF。

使用的变量类型是int。 经过几次尝试后,我还发现我可以放入的“最大”值是0x7F,这将在hex编辑器中正确显示,如果我输入0x80,那么hex编辑器将显示0xC280。

怎么了?

一点调查显示输出的值是UTF-8编码的(以下行是Python):

In [1]: "\xc2\x80".decode("utf-8") Out[1]: u'\x80' In [2]: "\xc3\xbf".decode("utf-8") Out[2]: u'\xff' 

确保为print / println / write选择正确的重载,以便将整数值写为字节而不是字符或字符串。 有关所有重载,请参阅PrintStream的文档 。

错误的是你在写字符,而且它们被编码为UTF-8。 写字节代替。