更好地了解Kaitai Struct的32位转换器

问题描述

我是二进制解释的新手,并希望确保自己了解要查看的数据。特别是,我正在查看little-endian中的2个字节:

enter image description here

这是一个时间戳,它向我显示了对象树中的以下值:

enter image description here

在转换器中显示

enter image description here

对我来说,“正确”值是未分配的i32le值1599082994,它与2020年9月2日(星期三)UTC时间戳相对应。

我想我有两个主要问题:

  1. 如何告诉Kaitai Struct将字节解析为i32le,因此在对象树中显示1599082994,而不是i16le值4594?

  2. 如何将字节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;
        }

解决方法

请紧记这个问题,我们收到的不良文档会引起混乱。