问题写入文件0xFF

时间:2010-10-11 16:52:42

标签: java

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

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

怎么了?

2 个答案:

答案 0 :(得分:4)

你写字符有什么不对,而且它们被编码为UTF-8。改为写字节。

答案 1 :(得分:2)

一点调查显示输出的值是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选择正确的重载,以便将整数值写为字节而不是字符或字符串。有关所有重载,请参阅documentation of PrintStream