问题标签 [kaitai-struct]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kaitai-struct - Kaitai Struct - 可选块或属性
我的系统必须能够解析两种非常相似的输入数据。
- 如果数据来自队列,则它具有以下结构:
- 如果数据来自文件,则它具有以下结构:
我目前的代码如下:
我的想法是只创建一个适用于这两种方法的 .ksy 文件。我怎么才能得到它?它基本上是file_header
可选的,但我没有办法做到这一点。有人可以帮我吗?
c# - 更好地理解 Kaitai Struct 的 32 位转换器
我是二进制解释的新手,想确保我理解我正在查看的数据。特别是我正在查看小端序中的 2 个字节:
这是一个时间戳,它在对象树中显示以下值:
在转换器中显示:
对我来说“正确”的值是未分配的 i32le 值 1599082994,它对应于 2020 年 9 月 2 日星期三晚上 9:43:14 的 UTC 时间戳。
我想我有两个主要问题:
我如何告诉 Kaitai Struct 将字节解析为 i32le,以便在对象树中显示 1599082994,而不是 i16le 值 4594?
如何将字节 f2 11 转换为 32 位未分配值。当我尝试运行以下基本 c# 程序时,我无法将这些字节转换为 32 位未分配值,但确实成功地将它们转换为 16 位未分配值。
或者我猜秘密问题3,我看这一切都错了吗?
kaitai-struct - 问题:如何在kaitai中写`010 switch and if`
我非常喜欢 kaitai 结构,我需要在 kaitai 中重写 010 二进制模板之一。我在我的 010 模板中发现了类似于以下的结构,我想知道如何在 kaitai 中处理它。
例如:1
例如:2
python - 从 kaitai struct 获取所有类型的平面图
我用 kaitai struct 在 python 中生成了一个简单的解析器。现在我想实现类似于 kaitai web ide 在十六进制视图(https://ide.kaitai.io/devel/)中所做的事情,将类型逐字节映射到二进制。如何使用解析器来实现这一点?一个小片段会很有用。
json - Kaitai Struct 转储到 json
我需要一个像“ksc”这样的命令行,它可以接受参数“二进制文件”和“yaml文件”并将其转储为json格式。WebIDE 通过“ExportToJson”做同样的事情,但我需要命令行中的相同功能。
谢谢你
yaml - Kaitaistruct 代码中的异常 - 解析错误:未定义
我是凯泰的新手,请帮我解决这些异常。
代码:
我得到的例外:
python - 在 Python 中使用 Kaitai Struct 解析二进制文件
我想创建一个快速的 python 脚本,给定一个二进制文件(.bin)和一个 kaitai 结构文件(.ksy),它会给我 json 格式的数据,就像 webide 所做的那样。我是 kaitai 结构的新手,并且已经阅读了文档以了解它们,但我似乎没有找到 python 库的任何资源,所以我不确定如何去做。感谢您提前提供任何帮助。
python - Kaitai Struct:将参数传递给另一个 .kys 文件
我对编码比较陌生,目前我正在尝试用 kaitai 解析一些二进制文件。正在解析的文件大多具有相似的标题,但有些不同,需要相应地处理。所以我创建了 main.ksy,它导入了子文件 ver01.ksy、ver02.ksy 等。对于这个项目,不幸的是,这个文件结构非常固定,我无法更改它。
现在在每个 verXX.ksy 文件中都有一个基于主文件 seq 中的参数的条件。
在子文件中调用函数时,是否有一种简单的方法可以访问此参数?主文件如下所示:
其中一个 verXX 文件如下所示:
现在我想将参数 myvar 传递给 ver01.ksy 文件中的函数 ver_01。我尝试在括号中添加参数,如下所示:
然后通过以下方式在 ver01.ksy 中调用它:
但这不起作用并给了我错误:
ver_01:/seq/0/repeat-expr:无法在 ver_01 上下文中访问“主文件”
我在用户指南中也找不到任何关于将参数传递给不同 .ksy 文件的信息。有人知道如何传递参数 myvar 吗?对不起,这是我第一次在这里发帖
编辑:忘了提:编译为 .py
kaitai-struct - kaitai-struct-compiler 生成与 webIDE 不同的文件
我正在尝试使用 kaitai-struct 解析 PE 文件。为了从 java 中的 .kys 文件生成文件,我使用的是 0.9 版本的 kaitai-struct-compiler。当我尝试解析文件时,它会引发一些解析异常,但在 kaitai 的 webIDE(https://ide.kaitai.io/)中它工作得很好。
鉴于我只使用最新版本,webIDE 为同一个 .kys 文件生成不同文件的原因是什么?
precision - 如何正确使用 Kaitai-Struct 解码这些数据?
我想知道是否有更好的方法来使用 kaitai-struct 解码以下内容。
数据规范
我有按以下顺序存储的可变长度数据:
如果 lsblo
为 1:
否则:
如您所见,如果 lsblo
为 1 则hi
高 32 位lo
编码为双精度(ieee-754 64 位双精度),否则hi
不存在且高 32 位lo
编码为 int(32 -位有符号整数)。
什么(有时)有效
这是我能够想出的,但这是一个丑陋的黑客。abs(e-1023) >= 32
由于被迫使用位移而不是使用幂函数,它也无法正常工作(1 << x instead of 2^x)
。