我試圖用python 2.7將一個十六進制字串寫入一個檔案,以便在用HxD打開時可以檢索到相同的十六進制值。 下面的代碼在多個輸入字串上作業正常,但當字串包含'0A'時,寫入就不正常了。
import binascii
s = "0ABD"/span>
f = open("output","w")。
f.write(binascii.a2b_hex(s))
f.close()
之后用HxD或在線https://hexed.it/打開該檔案,你會發現在每個'0A'之前都加了'0D'。 我正在使用vb.net讀取這些生成的檔案,但我得到的位元組數仍然比預期的多。
uj5u.com熱心網友回復:
你是在文本模式下打開檔案進行書寫,所以換行符被轉換為使用系統慣例。在Windows的情況下0A或'
'被轉換為0D 0A或者'
'。
從python的open()檔案(強調添加):
如果mode被省略,它默認為'r'。默認是使用文本模式,它可能會將' '字符在寫入時轉換為平臺特定的表示方式,在讀取時又轉換回來。因此,當打開一個二進制檔案時,你應該在mode值后面加上'b',以便以二進制模式打開檔案,這將提高可移植性。
以二進制模式打開檔案。
f = open("output"/span>, "wb"/span>)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/309350.html
標籤:
