Я пишу синтаксический анализатор для двоичного формата. Этот двоичный формат включает в себя различные таблицы, которые опять же в двоичном формате и обычно содержат поля разного размера (где-то от 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
}
Я наткнулся на модуль структуры, но понял, что i Самое низкое разрешение ts было байтом, а не битом, в противном случае модуль в значительной степени подходил для этой работы.
Я знаю, что битовые поля поддерживаются с использованием ctypes, но я не уверен, как здесь взаимодействовать со структурами ctypes, содержащими битовые поля.
Другой вариант - манипулировать битами самостоятельно, передавать их в байты и использовать с модулем структуры - но поскольку у меня есть около 50-100 различных типов таких структур, написание кода для этого становится более подверженным ошибкам . Меня также беспокоит эффективность, поскольку этот инструмент может использоваться для анализа больших гигабайт двоичных данных.
Спасибо.