C# 了解凯泰结构&x27;s 32位转换器更好

C# 了解凯泰结构&x27;s 32位转换器更好,c#,binary-data,kaitai-struct,C#,Binary Data,Kaitai Struct,我是二进制解释的新手,我想确保我理解我所看到的数据。我特别关注的是little endian中的2个字节: 这是一个时间戳,它在对象树中显示以下值: 在转换器中,它显示: 对于我来说,“正确”值是未分配的i32le值1599082994,对应于utc时间戳2020年9月2日星期三9:43:14 PM 我想我有两个主要问题: 我如何告诉Kaitai Struct将字节解析为i32le,以便在对象树中显示1599082994,而不是i16le值4594 如何将字节F211转换为32位未赋值值

我是二进制解释的新手,我想确保我理解我所看到的数据。我特别关注的是little endian中的2个字节:

这是一个时间戳,它在对象树中显示以下值:

在转换器中,它显示:

对于我来说,“正确”值是未分配的i32le值1599082994,对应于utc时间戳2020年9月2日星期三9:43:14 PM

我想我有两个主要问题:

  • 我如何告诉Kaitai Struct将字节解析为i32le,以便在对象树中显示1599082994,而不是i16le值4594

  • 如何将字节F211转换为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;
            }
    
    
    static void Main(字符串[]args)
    {
    var hexString=“f211”;
    var bytes=StringToByteArray(hexString);
    var val1=BitConverter.ToUInt16(字节);//有效
    var val2=BitConverter.ToUInt32(字节);//错误
    }
    公共静态字节[]StringToByteArray(字符串十六进制)
    {
    int numbercars=十六进制长度;
    字节[]字节=新字节[numbercars/2];
    对于(int i=0;i
    别提这个问题,我们得到的是错误的文档,导致了一些混乱