아래 소스와 같이... 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"출력
}
//---------------------------------------------------------------------------
|