通過編寫簡單的 python 腳本,我遇到了一個奇怪的問題:具有不同內容的兩個文件具有相同的大小。所以,我有兩個相同的二進制數據列表,一個在字符串中,一個在 int 中:char_list = '10101010'int_list = [1, 0, 1, 0, 1, 0, 1, 0]然后,我將列表轉換為字節數組:bytes_from_chars = bytearray(char_list, "ascii")bytes_from_ints = bytearray(int_list)打印出來,給我這個結果:bytearray(b'10101010')bytearray(b'\x01\x00\x01\x00\x01\x00\x01\x00')但是,這沒關系。將此數據寫入磁盤:with open("from_chars.hex", "wb") as f: f.write(bytes_from_chars)with open("from_ints.hex", "wb") as f: f.write(bytes_from_ints)并且文件大小相同,但文件包含的數據不同!ls -l:文件的十六進制轉儲:我的問題是,為什么文件的大小相等?就像我現在一樣,要寫入 0 或 1 的值,我們需要 1 位,而要寫入 30 或 31 的十六進制值,我們需要 5 位(1 1110 和 1 1111)
1 回答

胡子哥哥
TA貢獻1825條經驗 獲得超6個贊
要寫入0
or的值,1
您不需要一個位。你怎么能告訴之間的差異3 = 11
或有兩個1
?
在這兩種情況下,您都在編寫 8 個字節的數組,而在第一種情況下,您使用整個字節來編寫字符。
把它想象成從字母0
和寫一個詞1
,這個詞1
是0000 0001
,如果沒有0s
開頭,你將無法說出這個詞是什么。
添加回答
舉報
0/150
提交
取消