这个4字节数据的类型是什么?

时间:2016-08-18 13:08:28

标签: vb.net

所以我在这里获得了这条数据我试图用程序进行编辑。

数据由2个单浮点数组成,然后是两个未知的4字节数据类型,最后是32位int。

这里是十六进制数据:00 00 C8 41 00 00 70 41 00 20 00 00 7D 12 00 00 0A 00 00 00

转换后,他们应该是这些数字:

25.0 (float)
15.0 (float)
45 (???)
16 (???)
10 (int)

请告诉我我错过了什么或如何转换它。

注意:我只想尝试转换2个未知的4字节数据。我知道如何转换整数和浮点数。

编辑:以下是一些相同类型的已知值:

00 40 00 00 -> 90
E3 18 00 00 -> 35
00 00 01 00 -> 360
55 15 00 00 -> 30

它与某种角度/度有关。

由于

1 个答案:

答案 0 :(得分:0)

目前还不清楚你做了什么以及需要做些什么。基于this question。您可以使用System.BitConverter转换字节。你确定你的第二个角度是16而不是26吗?

    Dim data() As Byte = {&H0, &H0, &HC8, &H41, &H0, &H0, &H70, &H41, &H0, &H20, &H0, &H0, &H7D, &H12, &H0, &H0, &HA, &H0, &H0, &H0}

    Dim f1 As Single = System.BitConverter.ToSingle(data, 0)
    Dim f2 As Single = System.BitConverter.ToSingle(data, 4)
    Dim s1 As Int32 = CDbl(System.BitConverter.ToInt32(data, 8)) / 65536 * 360
    Dim s2 As Int32 = CDbl(System.BitConverter.ToInt32(data, 12)) / 65536 * 360
    Dim s3 As Int32 = System.BitConverter.ToInt32(data, 16)

然后你只需要反过来获取你的字节

    s1 = 180.0 / 360 * 65536

    Dim bytes() As Byte = System.BitConverter.GetBytes(s2)

    For Each b As Byte In bytes
        Console.Write(b.ToString("x"))
    Next

现在,如果您的问题是打开文件,请写入文件或其他内容。比我不太清楚。