我最近开始使用kaitai-struct来处理任意二进制格式。我为我的数据创建了.ksy文件,并将其解析为目标语言java。现在谁能指出我如何传递包含数据的输入文件以及如何获取被解析为输出的数据,以便我可以编写代码来操作该数据以满足我的要求?是否有任何关于如何根据我们获得的数据编写代码的教程。
提前致谢。
我最近开始使用kaitai-struct来处理任意二进制格式。我为我的数据创建了.ksy文件,并将其解析为目标语言java。现在谁能指出我如何传递包含数据的输入文件以及如何获取被解析为输出的数据,以便我可以编写代码来操作该数据以满足我的要求?是否有任何关于如何根据我们获得的数据编写代码的教程。
提前致谢。
首先,您必须使用 Kaitai Struct Compiler 或 WebIDE 从 .ksy 文件生成 Java 类。您可以在Kaitai 用户指南中找到更多关于如何使用编译器的信息。
如果您使用 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 中的许多解析功能都依赖于搜索支持。
您可以在此处阅读如何使用 API的通用文档,也可以在此处找到Java 特定文档。