Python 3.1-发送二进制压缩消息-可变长度数据

Python 3.1-发送二进制压缩消息-可变长度数据,python,python-3.x,Python,Python 3.x,我有一条格式为msgHdr+payload的网络消息。msgHdr有两条长边和两条短边。有效负载是可变长度的文本。我不知道如何格式化结构,以便发送压缩的二进制流 单个消息的格式为 s = struct.Struct('> L L I I 2110s') s.pack(*mystruct) # Then I pack it 但是,这仅适用于2110的固定大小字符串。如何将其用于可变长度的有效负载?我应该使用其他东西吗?对标题使用struct,然后添加有效负载 message = struc

我有一条格式为
msgHdr+payload
的网络消息。
msgHdr
有两条长边和两条短边。有效负载是可变长度的文本。我不知道如何格式化结构,以便发送压缩的二进制流

单个消息的格式为

s = struct.Struct('> L L I I 2110s')
s.pack(*mystruct) # Then I pack it

但是,这仅适用于2110的固定大小字符串。如何将其用于可变长度的有效负载?我应该使用其他东西吗?

对标题使用
struct
,然后添加有效负载

message = struct.pack('> L L I I', *header) + payload

看起来您可以创建格式字符串(毕竟,它只是一个字符串),然后将其与您描述的s.pack一起使用

如果您当前的语法是

s = struct.Struct('> L L I I 2110s')
s.pack(*mystruct)
你需要做的就是

s = struct.Struct('> L L I I %ds' % size_of_data)
s.pack(*mystruct)
首先将头创建为一个结构,然后创建可变长度部分,然后将它们连接起来,这可能会有所帮助