Модуль Python bitstring был написан для этой цели. Он позволяет вам брать произвольные кусочки двоичных данных и предлагает ряд различных интерпретаций через свойства Python. Он также предоставляет множество инструментов для построения и изменения двоичных данных.
Например:
>>> from bitstring import BitArray, ConstBitStream
>>> s = BitArray('0x00cf') # 16 bits long
>>> print(s.hex, s.bin, s.int) # Some different views
00cf 0000000011001111 207
>>> s[2:5] = '0b001100001' # slice assignment
>>> s.replace('0b110', '0x345') # find and replace
2 # 2 replacements made
>>> s.prepend([1]) # Add 1 bit to the start
>>> s.byteswap() # Byte reversal
>>> ordinary_string = s.bytes # Back to Python string
В битовой строке также есть функции для побитового чтения и навигации, как в файлах; фактически это можно сделать прямо из файла, не считывая его в память:
>>> s = ConstBitStream(filename='somefile.ext')
>>> hex_code, a, b = s.readlist('hex:32, uint:7, uint:13')
>>> s.find('0x0001') # Seek to next occurence, if found
True
Существуют также представления с различными порядковыми номерами, а также возможностью менять порядковые номера и многое другое - взгляните на руководство .