首页 > 解决方案 > 如何创建大小可调的字段?

问题描述

我正在创建一个带有一组字段的结构,我想定义一些字段与收到的输入一样长,而其他字段只有在为它们提供输入时才会存在(否则它将消失) -所以当我打印结构时,只会打印相关字段(那些有输入或预定义要打印的字段,即使是'0')

class Data (Frame):
    _name_ = 'Data'
    _pack_ = 1
    _fields_ = [
        ("fc",                      fc),
        ("duration",          c_uint16),
        ("add1",           c_ubyte * 6),
        ("add2",           c_ubyte * 6),
        ("add3",           c_ubyte * 6),
        ("fb",                c_uint16),
    ]

    def __init__(self, **kwargs):
        params = {
            'duration': c_uint16(kwargs.get('duration', 0)),
            'add1': address_to_ubyte(kwargs.get('add1', None)),
            'add2': address_to_ubyte(kwargs.get('add2', None)),
            'add3': address_to_ubyte(kwargs.get('add4', None)),
            'fb':c_uint16(kwargs.get(fb, 0)),
        }

这就是我在此期间所拥有的。(我知道它不起作用)我希望例如持续时间 add1 和 add2 字段为“0”,除非另有定义,add3 仅在收到输入时才存在(如果不存在 - 它根本不应该出现)和“fb”字段是给定输入的大小(如果不是,那么它应该是“0”)

标签: pythonctypes

解决方案


推荐阅读