Итак, я получаю эти данные. Из сетевого сокета или из файла. Я собираю код, который будет интерпретировать данные. Прочитайте некоторые байты, проверьте некоторые флаги, а некоторые байты указывают, сколько данных следует за ними. Прочтите столько данных, промойте, повторите.
Эта задача очень напоминает мне парсинг исходного кода. Мне удобно с lex/yacc и antlr, но они не справляются с этой задачей. Вы не можете указать биты и необработанные байты как токены (ну, может быть, вы могли бы, но я не знаю, как), и вы не можете уговорить их «прочитать два байта, превратить их в беззнаковое 16-битное целое, назовите это n, а затем прочитать n байт.".
Опять же, когда спецификация протокола/формата данных определяется систематическим образом (не все из них), должен быть систематический способ чтения данных, отформатированных в соответствии с протоколом. Правильно?
Должен быть инструмент, который это делает.