當我用壓縮代碼壓縮數據時,我不知道如何處理整數,我需要將整數存儲爲1bytes,2bytes,3bytes等內存,我如何在Python中執行此操作。如何在Python中存儲特定位(24位,16位等)的int?
或者,如何改變元組(1,0,1,...,1)(24位)轉換成精確3字節存儲
當我用壓縮代碼壓縮數據時,我不知道如何處理整數,我需要將整數存儲爲1bytes,2bytes,3bytes等內存,我如何在Python中執行此操作。如何在Python中存儲特定位(24位,16位等)的int?
或者,如何改變元組(1,0,1,...,1)(24位)轉換成精確3字節存儲
的struct
模塊中的標準庫包數據轉換成字節。
如果你需要以字節爲單位的任意數目收拾那麼它可能是更好地使用bytearray
比依靠struct
模塊上,例如:
>>> a = bytearray(3) # create 3 byte array
>>> a[0] = 0x3e
>>> a[1] = 0xff
>>> a[2] = 0x00
注意,任何Python對象的內存開銷將會比幾個字節多得多,所以如果你真的擔心內存使用,那麼你應該把所有的數據存儲在儘可能少的對象中。
根據您的具體需求,第三方模塊(如bitstring)可能會有幫助(完全披露:我寫了它)。
>>> b = bitstring.BitArray((1,0,1,1,1,0,0,1,1,1,0,1,0,1,1,1))
>>> b.bytes
'\xb9\xd7'
>>> b.uint
47575