所以我目前正试图解压具有以下格式的结构,用C写的:开箱包含Python中的布尔一个结构
{
volatile bool
volatile float
bool
}
我已经使用UDP库
发送了这一点Udp.write(((byte*)&pm), sizeof(struct PressureMonitor));
另一方面,我使用Python来接收Datapacket。
import socket
import time
import struct
UDP_IP = '192.168.1.222'
UDP_PORT = 8742
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((UDP_IP, UDP_PORT))
while True:
data, addr = sock.recvfrom(1024)
print(len(data))
print(struct.unpack('cfc',data))
time.sleep(.01)
len(数据)给我一个6的长度,这是预期的。但是,我遇到了下一行的问题。鉴于结构是格式化的布尔值,float,boolean,'cfc'应该是正确的格式字符串。然而,它是错误的,并告诉我应该是一个9字节的数据,这是完全困惑我。我可以(如某人所建议的)简单地用float/double数组替换结构,但是我觉得如果我能弄清楚这有什么问题,那对我来说会更好。
谢谢!为了更好地理解发生了什么,本地和非本地字节顺序是什么意思?我无法找到一个很好的解释。 – VoidShredder
@VoidShredder维基百科关于[Endianness]的文章(https://en.wikipedia.org/wiki/Endianness)对字节顺序问题有很好的解释,所以请阅读该文章。 –