Упаковка / распаковка сложных данных в Python

Я пытаюсь отправить / получить данные с помощью встроенного устройства, используя настраиваемый протокол. Кажется, что struct.pack () и unpack () справятся со своей задачей, но аргумент fmt не кажется достаточно гибким для обработки массивов данных переменной длины.

Пример: устройство отправляет [отчет о событии] [количество событий] ([тип события] [значение события], [тип события] [значение события], ...)

Где:

  • отчет о событии (беззнаковый 8-битный)
  • количество событий (беззнаковый 16-битный)
  • тип события (беззнаковый 8-битный)
  • значение события (16-битное со знаком)

Как лучше всего декодировать эти данные в Python? Кроме того, как мне закодировать аналогичные структуры данных для отправки на устройство?


person Karl    schedule 12.05.2013    source источник


Ответы (1)


Рассмотрите возможность использования python-bitstring для реализации двоичных протоколов. Он довольно гибкий и простой в использовании.

person skarap    schedule 12.05.2013