亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么這個二進制文件的大小是相等的,盡管它們不應該?

為什么這個二進制文件的大小是相等的,盡管它們不應該?

達令說 2021-09-02 19:48:06
通過編寫簡單的 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個贊

要寫入0or的值,1您不需要一個位。你怎么能告訴之間的差異3 = 11或有兩個1?

在這兩種情況下,您都在編寫 8 個字節的數組,而在第一種情況下,您使用整個字節來編寫字符。
把它想象成從字母0和寫一個詞1,這個詞10000 0001,如果沒有0s開頭,你將無法說出這個詞是什么。


查看完整回答
反對 回復 2021-09-02
  • 1 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號