Доступ к битовым полям при чтении / записи двоичных структур данных

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

Спасибо.

11
задан Tuxdude 25 August 2011 в 23:35
поделиться