Я пишу парсер для двоичного формата. Этот двоичный формат включает в себя разные таблицы, которые снова находятся в двоичном формате, в котором обычно используются разные размеры полей (от 50 до 100 из них).
Большинство этих структур будут иметь битовые поля и будут выглядеть примерно так, как показано на C:
struct myHeader
{
unsigned char fieldA : 3
unsigned char fieldB : 2;
unsigned char fieldC : 3;
unsigned short fieldD : 14;
unsigned char fieldE : 4
}
Я наткнулся на структурный модуль, но понял, что его самое низкое разрешение было байтом, а не бит, иначе модуль в значительной степени был подходящим для этой работы.
Я знаю, что битподы поддерживаются с помощью ctypes, но я не уверен, как здесь взаимодействовать ctypes structs, содержащие битовые поля.
Другим вариантом является манипулирование битами и подача его в байты и использование его с помощью модуля struct, но поскольку у меня есть около 50-100 различных типов таких структур, запись кода для этого становится более подверженной ошибкам, Меня также беспокоит эффективность, поскольку этот инструмент может использоваться для синтаксического анализа больших гигабайт двоичных данных.
Спасибо.