问题描述
我是二进制解释的新手,并希望确保自己了解要查看的数据。特别是,我正在查看little-endian中的2个字节:
在转换器中显示:
对我来说,“正确”值是未分配的i32le值1599082994,它与2020年9月2日(星期三)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;
}
解决方法
请紧记这个问题,我们收到的不良文档会引起混乱。