【问题标题】:Kaitai code writingKaitai code writing
【发布时间】:2017-12-14 09:49:13
【问题描述】:

我最近开始使用 kaitai-struct 来处理任意二进制格式。我为我的数据创建了 .ksy 文件并将其解析为目标语言 java。现在谁能指出我如何传递具有数据的输入文件以及如何获取被解析为输出的数据,以便我可以编写代码来操作该数据以满足我的要求?是否有任何关于如何根据我们获得的数据编写代码的教程。

提前致谢。

【问题讨论】:

    标签: java parsing hexdump kaitai-struct


    【解决方案1】:

    首先,您必须使用 Kaitai Struct 编译器或 WebIDE 从 .ksy 文件生成 Java 类。你可以在the Kaitai user guide找到更多关于如何使用编译器的信息。

    如果您使用 WebIDE,只需右键单击您的 .ksy 文件并选择 Generate parser > Java 菜单项。

    生成 Java 代码后,可以直接从本地文件解析结构,如下所示:

    AnExampleClass output = AnExampleClass.fromFile("an_example.data");
    // ... manipulate output ...
    

    或者你可以从一个字节数组(byte[])中解析一个结构:

    AnExampleClass output = new AnExampleClass(new KaitaiStream(byteArray));
    // ... manipulate output ...
    

    请注意,不支持从不可搜索的流(即 FileInputStream、BufferedInputStream 等)进行解析,并且可能不会被支持,因为 KS 中的许多解析功能都依赖于搜索支持。

    你可以在这里阅读generic documentation如何使用API​​,你可以找到Java-specific documentation here

    【讨论】:

    • 你能给我一个像sn-p代码的例子吗?我已经阅读了文档,但无法完全理解它在说什么。一个小sn-p可以帮到我很多,提前谢谢
    • 我不明白你卡在哪里了。例如,您是否尝试使用我刚刚在您回复的答案中发布的代码 sn-ps?如果你尝试过,那么你卡在哪里了?错误信息是什么等?
    • 是的,谢谢,我只是在某些时候感到困惑,所以我无法理解我在做什么。但是在阅读了一段时间的文档之后,我得到了它的 git。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 2018-07-10
    相关资源
    最近更新 更多