Как вывести значения для полей структуры данных в конструкции Python? - PullRequest
0 голосов
/ 14 марта 2019

Вот простая структура длины тега-значения, определенная с использованием библиотеки construct для Python:

Tlv = Struct(
    'tag' / Int16ub,
    'length' / Int32ub,
    'value' / Array(this.length, Byte)
    )

if __name__ == '__main__':
    tlv_data = dict(tag=1, length=5, value=b'\xFF\xFF\xFF\xFF\xFF')
    encoded = Tlv.build(tlv_data)
    print(encoded)
    decoded = Tlv.parse(encoded)
    print(decoded)

Хотя пример правильно кодирует и декодирует данные, мне нужно знать длину *Заранее введите поле 1005 * и предоставьте его с помощью параметра length.

Существует ли подход, который позволяет мне инициализировать структуру путем пропускания минимального значения, т. Е. tlv_data = dict(tag=1, value=b'\xFF\xFF\xFF\xFF\xFF'), и заставить ее вычислить еевладеть, каким должно быть адекватное значение поля length?

В то же время, когда я анализирую необработанные данные, я ожидаю, что он извлечет длину из необработанных данных и затем убедится, что valueэто действительно много байтов.

Это должно работать в принципе, или я неправильно понимаю идеологию construct?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...