Python结构体打包时使用空格填充

5

我需要使用给定的协议在Python中创建/发送二进制数据。该协议要求使用固定宽度字段,并包含空格填充。使用Python的struct.pack,我唯一能想到的是计算空格填充并自己添加。是否有更好的方法来实现这一点?

谢谢


是指空格字符填充还是用0字节填充? - Doug T.
2个回答

8

结构体中有一个占位符x),可以用来填充字节:

 # pack 2 16 bit values plus one pad byte
 from struct import pack
 packedStrWithOneBytePad = pack("hhx", 1000, 2000)

1
文档中没有任何指示,可以指定填充应该是什么。我记得读到默认情况下是 null,但现在好像找不到了。 - Pradyot
1
@Pradyot,我怀疑你无法配置这个垫子。你可能需要自己填充垫子,使用普通字节并指定要使用的字符。 - Doug T.
好的,谢谢。只是想确认一下,那是唯一的方法。 - Pradyot
1
这个回答根本没有回答问题。 - maxschlepzig

1

对于基于64位的CPU,使用'0l'将字节与重复计数为零对齐。

示例:
bytes = struct.pack('???0l',1,2,3)
print(len(bytes)) // 将打印8


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接