如何确定Python结构/打包格式字符串中的元素数量?

5 投票
1 回答
1151 浏览
提问于 2025-04-16 13:36

在使用Python的struct模块时,你可以指定一个格式字符串,这个字符串告诉程序如何理解二进制数据:

>>> from struct import *
>>> fmt = 'hhl'
>>> values = [1,2,3]
>>> blob = pack(fmt, values)

你可以很容易地计算出存储这种格式的实例需要多少字节:

>>> calcsize(fmt)

那么,获取需要多少个变量来“填充”这个格式的最佳方法是什么呢?基本上,这样可以提前知道“值”数组应该有多大,以便在上面的例子中执行pack()操作。

>>> calcentries(fmt)
3

有没有这样的东西呢?

1 个回答

5

我怕在struct这个API里没有这样的功能,不过你可以自己定义一个,而不需要解析格式字符串:

def calcentries(fmt):
    return len(struct.unpack(fmt, '\0' * struct.calcsize(fmt)))

撰写回答