我对编码比较陌生,目前我正在尝试用 kaitai 解析一些二进制文件。正在解析的文件大多具有相似的标题,但有些不同,需要相应地处理。所以我创建了 main.ksy,它导入了子文件 ver01.ksy、ver02.ksy 等。对于这个项目,不幸的是,这个文件结构非常固定,我无法更改它。
现在在每个 verXX.ksy 文件中都有一个基于主文件 seq 中的参数的条件。
在子文件中调用函数时,是否有一种简单的方法可以访问此参数?主文件如下所示:
meta:
- id: mainfile
file-extension: log
imports:
- ver01
- ver02
seq:
- id: header
type: mainheader
- id: binary
type: ver_01
types:
mainheader:
- id: myvar
type: u1
其中一个 verXX 文件如下所示:
meta:
- id: ver_01
- endian: le
seq:
- id: someFunc
- type: u1
- repeat: expr
- repeat-expr: 10*myvar
现在我想将参数 myvar 传递给 ver01.ksy 文件中的函数 ver_01。我尝试在括号中添加参数,如下所示:
ver_01(myvar)
然后通过以下方式在 ver01.ksy 中调用它:
mainfile.header.myvar
但这不起作用并给了我错误:
ver_01:/seq/0/repeat-expr:无法在 ver_01 上下文中访问“主文件”
我在用户指南中也找不到任何关于将参数传递给不同 .ksy 文件的信息。有人知道如何传递参数 myvar 吗?对不起,这是我第一次在这里发帖
编辑:忘了提:编译为 .py