0
我的整數列表是A = [14,10,0,0]
;使用bytearray()將整數列表寫入Python 2.7中的.Bin文件導致10被轉換爲新行字符並寫爲0x14和0x10
f.write(bytearray(A))
我的二進制文件(視爲HEX所示)
0e 0d 0a 00 00
通知的0a
我的整數列表是A = [14,10,0,0]
;使用bytearray()將整數列表寫入Python 2.7中的.Bin文件導致10被轉換爲新行字符並寫爲0x14和0x10
f.write(bytearray(A))
我的二進制文件(視爲HEX所示)
0e 0d 0a 00 00
通知的0a
的Python在字節表示解釋號10作爲換行符之前出現的附加0d
,更準確地說是ASCII換行符(LF):
In [1]: A = [14,10,0,0]
In [2]: bytearray(A)
Out[2]: bytearray(b'\x0e\n\x00\x00')
你有沒有機會使用Windows?在那裏,一個換行符作爲一個回車符(CR,十六進制的0d)和一個換行字符序列寫入文件。要避免這種與系統相關的翻譯,您應該打開binary mode中的文件:
如果省略模式,則默認爲'r'。默認情況下,使用文本模式,可以在寫入時將'\ n'字符轉換爲特定於平臺的表示並返回讀取。因此,當打開一個二進制文件時,應該在模式值後加'b'以二進制模式打開文件,這將提高可移植性。
是。在Windows 10上,我實際上是以HEX格式打開文件。這就是實際問題所在。它的意思是十六進制。但由於某種原因它分成兩個十六進制數字 – user1954188