2016-08-18 6 views
-2

私はここでこのデータを取得しました。プログラムで編集しようとしています。この4バイトデータの種類は?

データは、2つのシングルフロート、次に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 

それはいくつかの種類の角度/度に関係しています。

おかげ

+2

何がわからないのか、それらを編集するのはなぜですか(未知のバイト)? – ABuckau

+0

あなたはそれらがそれぞれ4バイトの2つの値であると確信していますか? – GSerg

+1

これらのデータ型の結果の値が45と16であることをどのように知っていますか? –

答えて

0

それはあなたがやっていることと行われるために必要とされるものを本当にはっきりしていません。 this questionに基づいています。 System.BitConverterを使用してバイトを変換できます。 2番目の角度が26番ではなく16番であると確信していますか?

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 

を取得するために逆を行う必要があります。それは私には分かりませんでした。

+0

まあ、私の悪い。それは本当に26にする必要があります。あなたの数式が動作します。どうもありがとう。 –