C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[56118] Re:포인터 형 변환에 대해서 질문합니다.
HS.Soul [janghs1117] 1520 읽음    2009-02-11 14:55
인텔 계열의 CPU 는 메모리의 데이터를 역워드 방식으로 처리합니다.

실제 메모리 상에 0x00, 0x02 의 순서로 되어있다면...

이는 0x200 (0x02, 0x00) 으로 처리가 되는거죠..

포인터  변환에서는 32비트 OS 라면 4바이트 크기로 데이터가 처리될텐데..

이때도 역시 4바이트 단위로 역워드 연산이 됩니다.

0x01, 0x02, 0x03, 0x04 => 0x04030201 이런 식으로 말이죠..^^;

참고하시길~~

이용태 님이 쓰신 글 :
: 아래 소스와 같이... 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출력
:
:
: }

+ -

관련 글 리스트
56115 포인터 형 변환에 대해서 질문합니다. 이용태 943 2009/02/11
56118     Re:포인터 형 변환에 대해서 질문합니다. HS.Soul 1520 2009/02/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.