2019年2月26日 星期二

[python] 在 Python 裡面自由的操作 bit 為單位的資料 -- 最簡單的方式操作 bitstream


基本上, 只要使用 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