【问题标题】:Problem writing 0xFF to file将 0xFF 写入文件时出现问题
【发布时间】:2010-10-11 16:52:41
【问题描述】:

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

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

怎么了?

【问题讨论】:

    标签: java


    【解决方案1】:

    问题在于您正在编写字符,并且它们被编码为 UTF-8。改为写入字节。

    【讨论】:

      【解决方案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 了解所有重载。

      【讨论】:

      • 感谢您为我指明正确的方向!我从 .print 更改为 .write 并且它有效。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      • 2014-01-28
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多