pythoncstruct方法的使用

2024-09-29 00:20:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个应用程序,它返回一个bytesobject,它由无符号短整数、有符号短整数、一些字符和一个浮点组成。结构总是一样的。相同的类型在de bytes项目中始终处于相同的位置。 我想在各种变量中解包bytes对象,我可以使用Python模块“struct”来解包,然后使用解包方法。 但是,似乎有一种更好的方法可以通过Python cstruct模块实现这一点: https://github.com/andreax79/python-cstruct

我已经阅读了几次文档并做了一些测试,但我不知道它应该如何工作。是的,我可以创建类并将结构定义为字符串。但我不明白如何访问已定义结构的变量

假设我有一个字节对象响应=b'\x01\x02\x03\x04' int包含2个短int

import cstruct

response = b'\x01\x02\x03\x04'
print (type (response), response)

class test(cstruct.CStruct):
    __byte_order__ = cstruct.BIG_ENDIAN
    __struct__ = """
        unsigned short var1;
        unsigned short var2;
    """

t = test(response)
print (type(t), t)

结果是

<class 'bytes'> b'\x01\x02\x03\x04'
<class '__main__.test'> test(var1=258, var2=772)

好的,到目前为止还不错。 所以t是一个类“\uuuu main\uuuuu.test”,t=test的值(var1=258,var2=772)

现在我可以访问组件t.var1和t.var2

有没有一种聪明的方法将组件映射到一个列表,或者更好地映射到一个字典


Tags: 方法testbytesresponse符号整数结构class