Вы смотрели на модуль bitstring
? Он предназначен для упрощения создания, анализа и изменения двоичных данных, чем непосредственное использование модулей struct
и array
.
Он специально создан для работы на битовом уровне, но также будет работать с байтами. Он также будет работать с Python 2.4.
from bitstring import BitString
s = BitString(filename='somefile')
# replace byte range with new values
# The step of '8' signifies byte rather than bit indicies.
s[10:15:8] = '0x001122'
# Search and replace byte value with two bytes
s.replace('0xcc', '0xddee', bytealigned=True)
# Different interpretations of the data are available through properties
if s[5:7:8].int > 1000:
s[5:7:8] = 1000
# Use the bytes property to get back to a Python string
open('newfile', 'wb').write(s.bytes)
Базовые данные, хранящиеся в BitString
, являются просто array
объектом, но с полным набором функций и специальных методов, которые упрощают его модификацию и интерпретацию.