小编典典

将0xFF写入文件时出现问题

java

我正在尝试使用PrintStream在Java文件中写入0xFF。当我使用十六进制编辑器打开其他值时,会将其他值正确写入文件,但是假定显示0xFF的值却改为0xC3BF。

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

怎么了?


阅读 379

收藏
2020-11-30

共1个答案

小编典典

进行一些调查后发现,输出值是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文档

2020-11-30