Я отправляю структуру в двоичном формате от C до моего сценария python.Распаковка структуры C с структурным модулем Pythons
Моя C структура:
struct EXAMPLE {
float val1;
float val2;
float val3;
}
Как отправить:
struct EXAMPLE *ex;
ex->val1 = 5.3f;
ex->val2 = 12.5f;
ex->val3 = 15.5f;
write(fd, &ex, sizeof(struct EXAMPLE));
Как я получаю:
buf = sock.recv(12)
buf = struct.unpack('f f f', buf)
print buf
Но когда я печатаю его на стороне питона все I get - это случайный мусор. Я уверен, что что-то не так с определением структуры в python, но я не уверен, что.
Я предлагаю проверить порядок байтов вы отправки/получения в –
'ex' уже указатель, а затем вы пишете на адрес указателя. – RyanL
У вашей C-структуры может быть и дополнение, которое вам нужно сообщить о распаковке кода Python. Кроме того, я не уверен, что такое пространство в формате. В любом случае, каковы фактические байтовые значения, отправляемые? Какие значения байтов принимаются? –