确定python struct/pack fmt字符串中的元素数量?

dan*_*tje 5 python struct binary-data

使用python struct module时可以指定一个格式字符串,声明如何解释二进制数据:

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

可以很容易地计算存储该格式实例所需的字节数:

>>> calcsize(fmt)
Run Code Online (Sandbox Code Playgroud)

检索变量数量的最佳方法是什么?需要"填充"格式?基本上,这将预先告诉上面示例中执行pack()的'values'数组应该有多大.

>>> calcentries(fmt)
3
Run Code Online (Sandbox Code Playgroud)

有这样的事吗?

Fre*_*Foo 5

我担心structAPI中没有这样的功能,但您可以自己定义它而无需解析格式字符串:

def calcentries(fmt):
    return len(struct.unpack(fmt, '\0' * struct.calcsize(fmt)))
Run Code Online (Sandbox Code Playgroud)