#include<iostream>
using namespace std;
int main(void)
{
int num=0x010203;
char * ptr=reinterpret_cast<char*>(&num);
for(int i=0; i<sizeof(num); i++)
cout<<static_cast<int>(*(ptr+i))<<endl;
return 0;
}
프로그램을 돌려보면 출력결과는 3210이 나오게 된다.
0123이 아닌 3210이 나오는 이유는, 리틀에디안과 빅 에디안의 차이점에서 나온다.
http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html
예를 들어 헥스값이 3A4025가 있다고 하면
빅에디안에서는 이를 3A4025로 저장한다.
반면 리틀에디안에서는 이를 25403A로 저장한다.
즉 리틀에디안에서는 뒤에서부터 1byte씩 잘라서 저장을 하는셈
'C++ > 공개글' 카테고리의 다른 글
함수 템플릿에서 궁금한 거. (0) | 2013.01.26 |
---|---|
클래스 템플릿에서 <<연산자를 오버로딩 할 때 (1) | 2013.01.26 |
멤버함수의 선언과 정의 분리 시 참고사항 (0) | 2013.01.26 |
static binding과 dynamic binding (0) | 2013.01.26 |
Polymorphism의 조건 (0) | 2013.01.26 |