| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Python: Общие вопросы > Си-шные массивы в struct |
| Автор: turist 21.8.2007, 12:12 |
| (crosspost в python.com.ua) Привет народ! Помогите инвалиду Google-а, не смог найти ответ на свой вопрос. Итак, есть структура пакета из Сишного .h: struct pktHeader { uint8_t version; uint8_t flag; uint8_t Reserved[2]; uint16_t type; uint16_t length; uint32_t totalLength; }; Я составляю строку формата для struct - "BB2BHHI". Но я так понимаю, что 2B - это не то, что мне нужно для uint8_t Reserved[2] - массива из двух элементов. Но ладно, я добрый, в этот раз могу и принять 2 значения, а потом их склеить. А когда их будет [100]? Что можете посоветовать? Заранее спасибо ;) |
| Автор: Void 21.8.2007, 12:45 |
Структуры данных не на пустом месте возникают. Массив из ста элементов — что это? Скорее всего строка. Значит можно использовать форматную строку '100s', которая вернёт все элементы одной строкой. А, скажем, для массива из сотни int, можно полученную строку ('400s') разбить с помощью array. Наконец, даже вытащить из середины кортежа сто элементов ('100b') и сделать с ними всё что угодно — не проблема в Питоне. ''.join(map(chr, tuple[N:N + 100])), к примеру. |
| Автор: turist 21.8.2007, 13:57 | ||
Спасибо за ответ. Это и я собираюсь делать, но я всегда перед тем, чтобы что-то делаю, смотрю, нет ли штатных средств, чтобы велосипед не изобретать. К тому же логичней было бы, чтобы посреди распарсенной структуры были не просто 100 елементов, а какой-нить один tuple, но из ста элементов, чтобы с ним работать проще. Перерыл struct, нету... Эх... Кстати, ща смотрю в сторону ctypes и ctypes.Structure - по-моему, что-от похожее на то, что мне нужно. |