|
안녕하세요?
엔디안에 대해서 알아보다가 직접 프로그램을 작성해서 테스트 해보려고 합니다.
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char *argv[])
{
ofstream outfile;
unsigned char ch[2];
ch[0] = 0x01;
ch[1] = 0x02;
outfile.open("endian");
outfile.write(ch, 2);
outfile.close();
return 0;
}
위와 같이 작성해서 윈도우, 리눅스에서 돌려보았는데요...
리눅스에서는 리틀 엔디안임을 쉽게 알 수 있더군요..
od -cx endian 해서 보면
0201의 순서로 기록된 것을 볼 수 있었습니다.
반면 윈도우에서 debug나 비주얼 씨 등을 이용해서 열어보면 01 02의 순서로 기록되어있었습니다.
하지만 인텔 계열의 CPU에서 작동하는 윈도우는 분명 리틀 엔디안이 아닙니까..
어셈블리 배울 때도 직접 눈으로 확인했었고...
그래서 비트맵 파일을 불러서 파일 사이즈 기록 부분에서 상위 바이트와 하위 바이트의 위치가 바뀌어있음을 확인했습니다.
왜 이런걸까요?
c++에서 1바이트보다 큰 데이터를 저장하려면 어떻게 해야 합니까?
비주얼 베이직에서는 쉽게 했는데, 막상 c++에서 하려니 잘 모르겠더군요.
명쾌한 답변을 해주실 분을 기다리겠습니다~ ^^
|