【发布时间】:2018-07-27 02:42:57
【问题描述】:
在运行 C 应用程序的嵌入式设备上,我定义了这个结构:
struct TestStruct
{
float first;
int second;
char third;
};
根据要求,我通过套接字发送此结构:
else if(strcmp(str, "Get Stru") == 0)
{
TestStruct testStruct;
testStruct.first = 1.2;
testStruct.second = 42;
testStruct.third = 'A';
INT32 sendDataLength = send(m_Socket, (char *)(&testStruct), sizeof(testStruct), 0);
}
并从我桌面上的 Python 脚本中读取它:
import struct
import socket
from ctypes import *
class YourStruct(Structure):
_fields_ = [('v', c_float),
('t', c_int),
('c', c_char)]
s = socket.socket()
host = '127.0.0.1'
port = 1234
s.connect((host, port))
s.send('Get Stru'.encode())
data = s.recv(20)
print(data)
x = YourStruct()
这是打印到我桌面上控制台的数据:
如何将data 重新组装成YourStruct?
请注意,嵌入式设备使用小端序,因此我不得不使用struct.unpack("<" + "f" * 2048, data) 重新组装浮点数组。
【问题讨论】: