我正在尝试使用PrintStream在java中写入0xFF文件。当我用Hex编辑器打开它时,其他值正确写入文件,但假设显示0xFF的值改为0xC3BF。
使用的变量类型是int。经过几次尝试后,我还发现我可以放入的“最大”值是0x7F,这将在十六进制编辑器中正确显示,如果我输入0x80,那么十六进制编辑器将显示0xC280。
怎么了?
答案 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。