-- 윈도우가 문제가 아니라 x86 계열 CPU 가 리틀엔디안이기 때문입니다.
윈도우는 대개 x86 계약 CPU 에서 돌잖아요 그래서 "윈도우는 대개 리틀엔디안" 이라고 한 거죠.
Lyn 님이 쓰신 글 :
: 윈도우가 문제가 아니라 x86 계열 CPU 가 리틀엔디안이기 때문입니다.
:
: OS 와는 관계가 없어요
:
: 초보대왕 님이 쓰신 글 :
: : 윈도우는 대개 리틀엔디안이기 때문이예요.
: : 빅엔디안이라면 2 가 나왔을 겁니다.
: :
: : 이용태 님이 쓰신 글 :
: : : 아래 소스와 같이... char형 배열을 하니 생성하고... 거기에 값을 대입합니다.
: : :
: : :
: : : a[]의 값은
: : : a[0] = 0x00
: : : a[1] = 0x02
: : : 입니다.
: : :
: : : ShowMessage로 출력하면 0, 2 값이 출력됩니다.
: : :
: : : 그런데 이것을 short형 포인터로 변환해서 2바이트 값을 액세스 할려고 하는데요...
: : :
: : : short로 해서 값을 액세스 하면...
: : :
: : : 0x00 0x02 이므로 값이 2가 나와야 하는거 아니가요?
: : :
: : : 디버깅을 해보니까... 바이트 위치가 바뀌어서 값이 출력되더라구요
: : :
: : : 0x02 0x00 --> 512출력...
: : :
: : : 이거 왜 그런겁니까?
: : :
: : : 다른 포인터로 형 변환할경우 바이트 위치가 바뀝니까?
: : :
: : :
: : : void __fastcall TForm1::Button2Click(TObject *Sender)
: : : {
: : : char a[2];
: : :
: : : memset(&a[0], 0x00, 1);
: : : memset(&a[1], 0x02, 1);
: : :
: : : ShowMessage(IntToStr(a[0]) + "-" + IntToStr(a[1])); //<------ "0-1" 출력
: : :
: : : short *pData = NULL;
: : :
: : : pData = (short*)a;
: : :
: : : ShowMessage(IntToStr(pData[0])); //<------ "512"출력
: : :
: : :
: : : }
: : : //---------------------------------------------------------------------------
|