Я хотел бы быстро заполнить как можно меньшим количеством копий длинный массив структур, который я постепенно получаю от C.
Если моя структура представляет собой только первичные типы данных, например следующее:
cdef packed struct oh_hi:
int lucky
char unlucky
Тогда следующее работает нормально:
DEF MAXPOWER = 1000000
cdef oh_hi * hi2u = <oh_hi *>malloc(sizeof(oh_hi)*MAXPOWER)
cdef oh_hi [:] hi2me = <oh_hi[:MAXPOWER]> hi2u
Но как только я изменю свою структуру, чтобы она содержала массив символов:
cdef packed struct oh_hi:
int lucky
char unlucky[10]
Предыдущее приведение memoryview компилируется, но при запуске выдает:
ValueError: Expected 1 dimension(s), got 1
Есть ли простой способ сделать это в Cython? Я знаю, что я мог бы создать структурированный массив, но, на самом деле, это не позволило бы мне назначать структуры C прямо в него.