2017-12-06 3 views
-1

일반적으로 어떤 오프셋이 있는지 알고 있지만 다음 배열에 대한 오프셋과 관련하여 질문이 있습니다.배열 내에서 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의 평균에서이 작업을 수행 : 이제 나는 UINT8 배열이 있다고 가정 해 봅시다 그것은 인덱스 0의를 가진 요소입니다 : × 00 오프셋

에서 myArray가 들어 0xCB

있도록 0x01로 오프셋 : 그것은, 인덱스 1 .. 9와 요소의 0xF8, 0xFA, 0xFB, 0xCA, 0xAC, 0x24, 페이,에는 0x53, 0x64, 0x4F

,691,363 그래서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 진수 *로 표시됩니다. 즉 "myArray [16]"(즉, myArray [0x10])에서 "Info1"필드 *가 시작된다는 의미입니다. –

답변

0

크기 열에 설명 된대로 요소의 크기가 정해져 있습니다. × 00 (일명, 위치 0) 오프셋

버전 시작에서 그 첫 번째 요소, 그래서 1의 크기가 : 그러니까 기본적으로 이것은 당신을 알려줍니다 무엇 0xCB

타임 스탬프0x01 (별칭 1)에서 시작하여 크기가 15이므로 조합 된 요소는 다음과 같습니다. [0xF8, 0xFA, 0xFB, 0xCA, 0xAC, 0x24, 0x53, 0x64, 0x4F, 0x1E, 0xA2, 0xF9 , 0x78, 0xCA, 0x63]

01 23,516,

정보 1 개시시에는 0x10을(일명, 위치 16) 오프셋, (8)의 크기가 그 결합 소자 : 그래서 [0xB8, 0x7F의, 0xFC, 0xFB, 0xD8, 0xFA, 0xFB, 0x8f를]

정보 2 개시시는 0x18 (일명, 위치 24) 옵셋과, (2)의 크기가 너무 결합 소자 : [0x67, 0xC1]

그리고 그것은 간다 ...

켜기 다른 점은 오프셋이 기본 16 (16 진수)에 있다는 것입니다. 따라서 0x10은 1 * 16 + 0 = 16입니다.

각 바이트 시퀀스를 적절한 유형으로 해석하는 방법은 귀하에게 달려 있습니다.

의미가 있습니까?

관련 문제