윈도우는 대개 리틀엔디안이기 때문이예요.
빅엔디안이라면 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"출력
:
:
: }
: //---------------------------------------------------------------------------
|