2010-10-11 65 views
0

我正在嘗試在java中使用PrintStream寫入0xFF文件。當我用十六進制編輯器打開它時,其他值會正確寫入文件,但假設顯示0xFF的值取而代之的是0xC3BF。向文件寫入0xFF的問題

使用的變量類型是int。經過幾次嘗試後,我還發現我可以放入的「最大」值是0x7F,這將在十六進制編輯器中正確顯示,如果我放入0x80,那麼十六進制編輯器將顯示0xC280。

怎麼了?

+1

你能展示你的代碼嗎? – Dmitry 2010-10-11 16:54:17

回答

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

+0

感謝您指點我正確的方向!我從.print更改爲.write,它的工作原理。 – 2010-10-11 17:12:55

4

問題在於你寫字符時,它們被編碼爲UTF-8。改寫字節。