Хотя модуль struct
делает обработку C-подобных структур, содержащих скалярные значения, очень простой, я не вижу, как разумно обрабатывать структуры, содержащие массивы.
Например, если у меня есть следующая структура C:
struct my_struct {
int a1[6];
double a2[3];
double d1;
double d2;
int i1;
int i2;
int a3[6];
int i3;
};
и хотите распаковать его значения и использовать те же переменные (a1
, a2
, a3
, d1
, d2
, i1
, i2
, i3
) в Python, Я сталкиваюсь с проблемой, что struct
просто дает мне каждое значение в кортеже индивидуально. Вся информация о том, какие значения должны быть сгруппированы в массив, теряется:
# doesn’t work!
a1, a2, d1, d2, i1, i2, a3, i3 = struct.unpack(
'6i3dddii6ii', b'abcdefghijklmnopqrstuvwxy' * 4
)
Вместо этого я должен нарезать и разделить кортеж вручную, что является очень утомительной и подверженной ошибкам процедурой:
t = struct.unpack('6i3dddii6ii', b'abcdefghijklmnopqrstuvwxy' * 4)
a1 = t[:6]
a2 = t[6:9]
d1, d2, i1, i2 = t[9:13]
a3 = t[13:19]
i3 = t[19]
Есть ли лучший способ обработки массивов с помощью struct
?