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,我看这一切都错了吗?
static void Main(string[] args)
{
var hexString = "f211";
var bytes = StringToByteArray(hexString);
var val1 = BitConverter.ToUInt16(bytes);//works
var val2 = BitConverter.ToUInt32(bytes);//error
}
public static byte[] StringToByteArray(String hex)
{
int NumberChars = hex.Length;
byte[] bytes = new byte[NumberChars / 2];
for (int i = 0; i < NumberChars; i += 2)
bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
return bytes;
}
解决方案
没关系这个问题,我们得到了导致一些混乱的糟糕文档。
推荐阅读
- delphi - 访问不带名称的过程参数
- hive - Hive-Hbase 集成 - 插入数据时的问题
- javascript - 这是此 JavaScript (JSX) 代码的正确 PHP 代码吗?
- excel - Application.Caption 行为:也返回窗口标题
- android - Firestore - 如何使用路径字符串创建 DocumentReference
- amazon-dynamodb - Dynamodb 键由 3 个字段组成
- docker - 当主机上的 VPN 开启时,容器上的 Internet 无法访问
- core-image - Swift 4.1 无法获取此 NSImage 的位图表示
- ms-access - MS-Access 2016 NavigationControl(选项卡)不显示
- angular-material - 无法在 Angular 材料中使用 PortalInjector 捕获组件中的数据