2017-12-06 22 views
-1

私は一般にどのようなオフセットがあるのか​​知っていますが、次の配列のオフセットに関する質問があります。のは、私がuint8の配列を持っているとしましょう:配列内の16進オフセットを計算する

const myArray uint8[]= 
    { 
    0xCB, 0xF8, 0xFA, 0xFB, 0xCA, 0xAC, 0x24, 0x53, 0x64, 0x4F, 0x1E, 0xA2, 
    0xF9, 0x78, 0xCA, 0x63, 0xB8, 0x7F, 0xFC, 0xFB, 0xD8, 0xFA, 0xFB, 0x8F, 
    0x67, 0xC1, 0xFD, 0xF8, 0xC2, 0xF8, 0xFF, 0xF9, 0xFA, 0xE4, 0xFA, 0xF9, 
    0xFB, 0xFE, 0xE4, 0xFA, 0xCA, 0xCF, 0x94, 0xD5, 0xD6, 0xCA, 0xA2, 0xA2, 
    .... 
    .... 
    .... 
    .... 
} 

は今、私が言うの記述があります。

-------------------------------------------------- 
| Offset in myArray | meaning  | size (Byte) | 
-------------------------------------------------- 
| 0x00   | Version  | 1   | 
------------------------------------------------- 
| 0x01   | Timestamp | 15   | 
------------------------------------------------ 
| 0x10   | Info1  | 8   | 
------------------------------------------------ 
| 0x18   | Info2  | 2   | 
------------------------------------------------ 

は、myarrayの平均値でこれを行います。オフセット0x00のために

:それはのインデックス0の要素ですmyarrayのは、のために0xCB

ので、0x01のオフセット:それは、インデックス1..9を持つ要素だ0xF8、0xFA、0xFB、0xCA、0xACの、0x24を、$ 53、0x64、0x4F

ので、 210

など

これは間違った解釈ですか?

+0

それは正しい.. – tkausl

+1

私はあなたが 'Timestamp'フィールドに' 1..9'をどのように思いついたのか分かりません。そのサイズは15として指定されているので、関連する要素は9ではなく15でなければなりません。つまり、 '0xF8,0xFA、0xFB、0xCA、0xAC、0x24、0x53、0x64、0x4F、0x1E、0xA2、0xF9、0x78、0xCA、0x63'です。 。 – unwind

+1

※サイズは忘れてしまいます。オフセットは* 16進数で表示されます。つまり、「Info1」フィールドは、myArray [16]で始まります(つまり、myArray [0x10] ')。 –

答えて

0

あなたの要素は、サイズの列で説明されているように、所定のサイズを持っています。 は0x00(別名、位置0)オフセット

バージョン開始で、その最初の要素ので、1の大きさを持っている:だから、基本的に、これはあなたを伝えるものです0xCB

タイムスタンプ0x01(別名、位置1)から始まり、サイズが15であるため、その組み合わされた要素:[0xF8、0xFA、0xFB、0xCA、0xAC、0x24、0x53、0x64、0x4F、0x1E、0xA2、0xF9 、0x78、0xCA、0x63]

INFO1開始時には、0x10の(別名、位置16)オフセットと、8の大きさを有し、その組み合わせの要素そう:[0xB8、0x7Fの、0xFC、0xFB、0xD8、0xFA、0xFB、0x8F]

Info2の開始時には、0x18の(別名、位置24)オフセットと、2のサイズを有しているので、その組み合わせの要素:[0x67、0xC1]

そしてそれが行く...

他の人が指摘しているように、あなたが分析で間違っているように見えることは、オフセットが基数16(16進数)にあるということです。したがって0x10は1 * 16 + 0 = 16です。

各バイトシーケンスを正しいタイプとして解釈する方法はあなた次第です。

これは意味がありますか?

関連する問題