【问题标题】:Kaitai Struct Parameter TypeKaitai 结构参数类型
【发布时间】:2021-06-21 02:45:48
【问题描述】:

我正在尝试将参数传递给 ksy 文件。该参数是另一个 ksy 文件类型。原因是我需要访问作为参数传递的 ksy 文件中的所有字段。 那可能吗? 如果是,请您提供语法代码 sn-p 以便我可以模仿它。 如果不是,还有什么解决方案?

谢谢。

【问题讨论】:

  • 您似乎希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的编码人员编写代码,但他们通常只有在发布者已经尝试自己解决问题时才会提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出和您实际获得的输出(控制台输出/回溯)。您提供的详细信息越多,您可能收到的答案就越多。检查FAQHow to Ask
  • 我已经更新了问题并添加了截图来解释我想要实现的目标,任何帮助将不胜感激

标签: kaitai-struct


【解决方案1】:

附属免责声明:我是Kaitai Struct 维护者(请参阅我的GitHub profile)。

首先,我建议始终使用 Kaitai Struct Web IDE (https://ide.kaitai.io/devel/) 的开发版,而不是稳定版。部署在https://ide.kaitai.io/ 的稳定IDE 有0.8 版本的KS 编译器,确实是最新的stable 版本,但目前已经2 岁了。但是该项目正在积极开发中,每周都会有新的错误修复和改进,因此稳定的 Web IDE 已经过时了。感谢recent infrastructure enhancement,现在每次更新编译器时都会重新构建开发 Web IDE,因此您甚至可以使用最新的功能。

但是,您将无法模拟您在 Web IDE 中描述的特定情况,因为它当前无法处理顶级参数类型(没有可以将自己的值作为参数传递的挂钩) .但它应该在本地环境中工作。您可以将Web IDE 中的commontype.ksypty.ksy 规范编译为您要使用的目标语言(the manual shows how to do it)。将其组合在一起的代码可能如下所示(Java):

Commontype ct = new Commontype(new ByteBufferKaitaiStream(new byte[] { 80, 75 }));
Pty r = new Pty(
    new ByteBufferKaitaiStream(new byte[] { 80 }), // IO stream
    ct // commonword
);

注意Pty构造函数的实际参数顺序可能不同,例如在 Python 中,首先是自定义参数 (commonword),然后是 IO 对象。检查以您的特定语言生成的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    相关资源
    最近更新 更多