问题描述
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
))