我有这个小问题,在过去一小时左右一直困扰着我.
string = b'-'
t = struct.pack(">h%ds" % len(string), len(string), string)
print(t)
Run Code Online (Sandbox Code Playgroud)
这个包的结果是b'\ x00\x01-'
我遇到的问题是我无法弄清楚如何解压缩结果b'\ x00\x01-'以便它只是' - ',是的.我知道我可以删除前面的废话,但它会变得有点复杂.我试着在这里简化它.希望有人可以帮助我.:)
通常,您不会将struct.pack长度标题和值放在一起.相反,你只需要struct.pack(">h", len(data))通过线路(例如在网络协议中)发送,然后发送数据.无需创建新的字节缓冲区.
在你的情况下,你可以简单地做:
dataLength, = struct.unpack(">h", t[:2])
data = t[2:2+dataLength]
Run Code Online (Sandbox Code Playgroud)
但正如我所说,如果你有一个基于套接字的应用程序,它就像这样:
header = receive(2)
dataLength, = struct.unpack(">h", header)
data = receive(dataLength)
Run Code Online (Sandbox Code Playgroud)