Python Struct Unpack

dbd*_*407 5 python struct

我有这个小问题,在过去一小时左右一直困扰着我.

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-'以便它只是' - ',是的.我知道我可以删除前面的废话,但它会变得有点复杂.我试着在这里简化它.希望有人可以帮助我.:)

And*_*Dog 5

通常,您不会将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)