我正在尝试Kaitai Struct解码一些数据。 我需要传递一个数组参数,但是ksc给出了一个错误。 以下是示例代码:
meta:
id: cat_34
seq:
- id: test1
type: fixed([0,1,2])
types:
fixed:
params:
- id: f_size
#no type is just an array
seq:
- id: val
type: u1
repeat: expr
repeat-expr: f_size[1] #trying to use second value of array.
它给出以下错误: cat_34:/ types / fixed / seq / 0 / repeat-expr:无法将操作[]应用于CalcBytesType
答案 0 :(得分:0)
在参数声明中没有类型(或使用type: bytes
)不会产生 byte数组类型(又称为“ CalcBytesType”),与 true数组某物。
在这种情况下,您会遇到一个错误:在Kaitai Struct v0.8及更低版本中未实现操作[]
,而在{0.9}中该操作only fixed recently and not for all targets不稳定。因此,您的选择之一就是升级到v0.9 +。
作为一种解决方法,您可能需要坚持使用真正的数组-即,不要传递[0, 1, 2]
,而要使用[0, 1, 2].as<u1[]>
。这将适用于所有版本,但将产生(1)可能效率较低的真实数组,(2)可能不受支持的数组实例化。