微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

构造中的动态长度/大小字段

如何解决构造中的动态长度/大小字段

假设我有一个construct.Struct,如下所示:

my_struct = construct.Struct(
    "data_length_in_bytes" / construct.Int32ub,"login" / construct.CString("ascii"),"password" / construct.CString("ascii"),"foo" / construct.Int32ub,"bar" / construct.Int32ub,"baz" / construct.Int8ub
    )
)

是否有一种方法可以根据另一个字段的大小(加上其自身的4个字节)动态生成/计算data_length_in_bytes字段的内容

还是我应该使用没有data_length_in_bytes的Struct,然后在转换之后/之前在字段中添加/删除字段?

解决方法

尝试使用 Prefixed 类。它需要两个参数。第一个是 Field 指定如何以字节为单位存储大小,第二个是要存储的内容。

所以在这种情况下,你会写:

my_struct = construct.Prefixed(construct.Int32ub,construct.Struct(
    "login" / construct.CString("ascii"),"password" / construct.CString("ascii"),"foo" / construct.Int32ub,"bar" / construct.Int32ub,"baz" / construct.Int8ub
))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。