문제

Hex Workshop을 다운로드했고 .dbc 파일을 읽으라고 들었습니다.

오프셋 0x04 및 0x05를 읽는 경우 28,315가 포함되어야합니다.

어떻게 해야할지 잘 모르겠습니까? 0x04는 무엇을 의미합니까?

도움이 되었습니까?

해결책

0x04는 4의 16 진수입니다 (0x는 숫자의 기본 16 표현에 대한 일반적인 접두사 규칙입니다. 많은 사람들이 10 진수로 생각하기 때문에)는 네 번째 바이트 일 것입니다 (오프셋이기 때문에 아마도 첫 바이트를 다음과 같이 계산할 것입니다. 바이트 0, 따라서 오프셋 0x04는 5 번째 바이트가됩니다).

나는 그들이 4 번째와 5 번째 바이트가 함께 28315 일 것이라고 말하고 있지만, 이것이 Little-Endian 또는 Big-Endian이라면 말 했습니까?

28315 (Decimal)는 16 진수 표기법에서 0x6e9b입니다.

참고 : Little-Endian 및 Big-Endian은 바이트 바이트가 작성된 순서를 나타냅니다. 전형적인 인간은 소수 표기법과 16 진수를 큰 엔디 언어로 씁니다.

256은 0x0100으로 작성됩니다 (왼쪽의 숫자는 가장 큰 규모입니다)

그러나 두 개의 바이트가 필요하며 Little-Endian 시스템은 낮은 바이트를 먼저 기록합니다 : 0x00 0x01. Big-Endian Systems는 High Byte를 먼저 작성합니다 : 0x01 0x00.

일반적으로 인텔 시스템은 리틀 엔디언이며 다른 시스템은 다양합니다.

다른 팁

이진 파일을 선형 바이트 배열로 생각하십시오.

0x04는 배열의 5 번째 (0 기반 배열) 요소이고 0x05는 6 위입니다.

0x04와 0x05의 두 값은 숫자 28,315를 만들기 위해 함께 또는 함께 연결될 수 있습니다.

당신이 읽는 값은 16 비트이므로, 하나의 값을 비트로 비트로 변신시켜야합니다.

int value = (ByteArray[4] >> 8) | ByteArray[5]);

바라건대 이것은 16 진이 어떻게 작동하는지 설명하는 데 도움이됩니다.

4 번째와 5 번째 XX 코드입니다.

1   2  3  4  5  6
01  AB 11 7B FF 5A

따라서 0x04 및 0x05는 "7B"및 "FF"입니다.

당신이 말하는 것을 가정하면, 당신의 경우 7bff는 원하는 값과 같아야합니다.

HTH

16 진수의 0x04는 소수점에서 4입니다. 16 진수의 0x10은 10 진수에서 16입니다. calc.exe 당신을 위해 16 진수와 소수점으로 변환 할 수 있습니다.

오프셋 4는 파일 시작부터 4 바이트를 의미합니다. 오프셋 0은 파일의 첫 바이트입니다.

바이트 4와 5를 보면 endianess에 따라 0x6e 0x9b (또는 0x9b 0x6e) 값이 있어야합니다.

시작 여기. 16 진수 값을 읽는 방법을 배우면 실제로 문제를 해결하기에 훨씬 더 나은 모양이됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top