(Little/Big)엔디안 바보짓. Study+more

short a = 1;
switch(a & 0x00FF){
...

리틀 엔디안에서는 다음과 같은 메모리 연산이 발생한다.

0x00 01 & 0x00 FF


그럼, 빅 엔디안에서는 어떨까?

0x01 00 & 0xFF 00


그럼, 만약 a가 어떤 이유에선지 리틀 엔디안 형식의 1값(0x00 01)을 저장하고 있고 위 코드가 빅 엔디안에서 돌아간다고 하면 어떻게 되는걸까?

0x00 01 & 0x FF 00

제대로 동작하게 하려면 어떻게 해야하나?

short a; //리틀 엔디안 형식의 1값 (0x00 01)을 가지고 있다고 가정함.
a = little2big(a);

switch(a & 0x00FF){
...
메모리 내용을 보면 다음과 같은 순서로 변해간다.

1) 0x00 01 -엔디안 변경-> 0x01 00
2) 0x01 00 & 0x FF 00

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://handmade.egloos.com/tb/4758394 [도움말]

덧글

덧글 입력 영역