基本上, 只要使用 bitstring, 就完整解決了大部分的問題.
官網
https://pythonhosted.org/bitstring/
快速上手範例
- 建立 bitstream instance
- 指定任意 bit 長度, 表示你的有號/無號資料
- 寫入檔案範例
- 讀取範例
- 從 bitstream 中, 解析出資料範例
不得不讚賞 bitstring 作者 ^_^
import bitstring
from bitstring import BitArray, BitStream
'''
a = BitArray('0xff01')
print('a = ', a)
print('a.bin = ', a.bin)
'''
# instance create demo
print(' -- instance create demo -- ')
s = BitStream()
s.append('int:4=-5')
s.append('int:4=7')
print('s = ', s)
print('s.bin = ', s.bin)
print(' -- instance create demo: pack method -- ')
s2 = bitstring.pack('int:4', 5)
s2.append('int:4= 7')
print('s2 = ', s2)
print('s2.bin = ', s2.bin)
# instance read demo
print(' -- instance read demo -- ')
data = s.read(4)
print('data.int = ', data.int) # -5
data2 = s.read(4)
print('data2.int = ', data2.int) # 7
# i/o write demo
print(' -- i/o write demo -- ')
open('out.bin', 'wb').write(s.bytes)
# i/o read demo
print(' -- i/o read demo -- ')
s = BitStream(filename='out.bin')
data = s.read(4)
print('data.int = ', data.int) # -5
data2 = s.read(4)
print('data2.int = ', data2.int) # 7