Construct是解析十六进制数据的解析库。在读取数据之后,首先必须定义映射,然后解析它。你可以在下面找到一个例子
....
data, addr = self.s.recvfrom(1024)
c = Struct("sync"/Int16ul, "ID"/Float32l)
x = c.parse(data)
print(x.sync)
print(x.ID)
我这里的问题是我正在从一个名为“varBytes”的列表中以编程的方式读取数据类型,例如我们的示例Int16ul和Float32l,它们的类型如预期的那样是“str”。数据名“sync”和“ID”也在名为“varNames”的列表中。 下面是我尝试过的
c = Struct(varNames[0]/varBytes[0],varNames[1]/varBytes[1])
这不管用。我怎样才能解决这个问题?你知道吗
varBytes[0]
是一个字符串,您需要的是来自construct
模块的Int16ul
对象。你知道吗您需要将字符串转换为对象您可以这样做,通过将
getattr
应用于模块construct
的getattr
名称获取对象:所以你的例子是:
要从列表对构建参数列表,可以将
Struct
应用于列表:它使用
zip
,因为使用索引会导致索引错误。你知道吗相关问题 更多 >
编程相关推荐