【发布时间】:2017-12-14 09:49:13
【问题描述】:
我最近开始使用 kaitai-struct 来处理任意二进制格式。我为我的数据创建了 .ksy 文件并将其解析为目标语言 java。现在谁能指出我如何传递具有数据的输入文件以及如何获取被解析为输出的数据,以便我可以编写代码来操作该数据以满足我的要求?是否有任何关于如何根据我们获得的数据编写代码的教程。
提前致谢。
【问题讨论】:
标签: java parsing hexdump kaitai-struct
我最近开始使用 kaitai-struct 来处理任意二进制格式。我为我的数据创建了 .ksy 文件并将其解析为目标语言 java。现在谁能指出我如何传递具有数据的输入文件以及如何获取被解析为输出的数据,以便我可以编写代码来操作该数据以满足我的要求?是否有任何关于如何根据我们获得的数据编写代码的教程。
提前致谢。
【问题讨论】:
标签: java parsing hexdump kaitai-struct
首先,您必须使用 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。
【讨论】: