Возникла такая задачка,с ctypes вообще не работал:
1) Как описать TLV на ctypes?
Сам TLV имеет следующий формат:
Идентификатор (2 байта)+Длина данных (2 байта)+Данные (Переменная длина)
Описал так:
class Tlv(Structure): _fields = [("tag",c_ushort), ("len",c_ushort), ("data",POINTER(c_ubytes)) ]
Но есть сомнения насчет поля data (байтовый массив). Или это правильно?
2) Как массив байт распарсить в TLV? По сети прибегает массив байт,который составлен из TLV. Как считать оттуда TLV на ctypes,что использовать (указатели итд.)? (нужен пример,т.к. с ctypes плохо знаком). Формат данных в сетевом пакете такой: заголовок (12 байт,есть поле указывающее на длину данных),за ним лежит байтовый массив из TLV.