Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Си-шные массивы в struct 
:(
    Опции темы
turist
Дата 21.8.2007, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 13.8.2007
Где: Киев

Репутация: нет
Всего: нет



(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]?

Что можете посоветовать?

Заранее спасибо ;)
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Void
Дата 21.8.2007, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 10
Всего: 173



Цитата(turist @  21.8.2007,  14:12 Найти цитируемый пост)
А когда их будет [100]?

Структуры данных не на пустом месте возникают. Массив из ста элементов — что это? Скорее всего строка. Значит можно использовать форматную строку '100s', которая вернёт все элементы одной строкой. А, скажем, для массива из сотни int, можно полученную строку ('400s') разбить с помощью array.
Наконец, даже вытащить из середины кортежа сто элементов ('100b') и сделать с ними всё что угодно — не проблема в Питоне. ''.join(map(chr, tuple[N:N + 100])), к примеру.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
turist
Дата 21.8.2007, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 13.8.2007
Где: Киев

Репутация: нет
Всего: нет



Цитата(Void @ 21.8.2007,  12:45)
А, скажем, для массива из сотни int, можно полученную строку ('400s') разбить с помощью array.
Наконец, даже вытащить из середины кортежа сто элементов ('100b') и сделать с ними всё что угодно — не проблема в Питоне. ''.join(map(chr, tuple[N:N + 100])), к примеру.

Спасибо за ответ. Это и я собираюсь делать, но я всегда перед тем, чтобы что-то делаю, смотрю, нет ли штатных средств, чтобы велосипед не изобретать. К тому же логичней было бы, чтобы посреди распарсенной структуры были не просто 100 елементов, а какой-нить один tuple, но из ста элементов, чтобы с ним работать проще. Перерыл struct, нету... Эх... Кстати, ща смотрю в сторону ctypes и ctypes.Structure - по-моему, что-от похожее на то, что мне нужно.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0492 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.