0

我对编码比较陌生,目前我正在尝试用 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

4

0 回答 0