2014-11-20 4 views
1

에 1 바이트의 정수 값을 구하는 방법은 다음과 같은 16 진수 문자열이 있습니다Little Endian 바이트 혼동. 리틀 엔디안

<0001cb01 1d006745 78568967 85001800 d7ff0000>

내가 리틀 엔디안에서 세 번째 바이트를 잡아해야합니다. 세 번째 바이트는 16 진수처럼 보입니까? 10 진수 값은 무엇입니까?

<cb011d> 

203 

또는 다른 뭔가?

답변

3

각 바이트는 0x00 (십진수 0)에서 0xFF (십진수 255)까지의 두 개의 16 진수로 표시됩니다. '0x'접두사는 16 진수를 나타내는 데 자주 사용됩니다. 따라서 문자열은 20 바이트를 나타내며 0x00, 0x01, 0xCB, 0x01 등의 값을 갖습니다.

255보다 큰 숫자를 저장하려면 리틀 엔디안 시스템에서 최하위 바이트가 먼저오고 큰 엔디안 시스템에서 최상위 바이트가 먼저 온다. 따라서 리틀 엔디안 수는 메모리에 '거꾸로'표시됩니다. 숫자 1000의 십진수는 16 진수의 0x03E8이므로 리틀 엔디안 시스템에서는 0xE8 바이트가 먼저 (하위 메모리 주소에) 표시되고 그 다음에 0x03 바이트가 나타납니다. 단일 바이트는 절대로 'little-endian'또는 'big-endian'이 아닙니다.이 개념은 여러 바이트의 순서에만 적용됩니다.

문자열이 무엇을 나타내는 지 분명하지 않습니다. 아마도 문자열이 큰 숫자라고 가정하고이 20 바이트 숫자가 리틀 엔디안에 저장되어 있다면 세 번째 바이트에 표시 될 바이트를 말하십시오.이 경우 세 번째 바이트는 end, 0xFF, decimal value 255. 또는 문자열의 세 번째 바이트, 즉 0xCB, 십진수 203을 의미 할 수 있습니다. 문제에 대해 알고있는 것을 기반으로 결정해야합니다.

관련 문제