我正在尝试使用PrintStream在Java文件中写入0xFF。当我使用十六进制编辑器打开其他值时,会将其他值正确写入文件,但是假定显示0xFF的值却改为0xC3BF。
使用的变量类型为int。经过几次尝试后,我还发现我可以输入的“最大值”值为0x7F,这将在十六进制编辑器中正确显示,如果我输入0x80,则十六进制编辑器将显示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的文档。
print
println
write