|
int nNum = 12345678;
int nNum1 = htonl(nNum);
int nNum3 = ntohl(nNum1);
double dNum = 12345678.12345678;
double dNum1 = htonl(dNum);
double dNum3 = ntohl(dNum1);
Memo1->Lines->Add(nNum);
Memo1->Lines->Add(nNum1);
Memo1->Lines->Add(nNum3);
Memo1->Lines->Add("");
Memo1->Lines->Add(dNum);
Memo1->Lines->Add(dNum1);
Memo1->Lines->Add(dNum3);
테스트를 해봤는데 인트형은 제대로 나오고
실수형은 소수점 밑에는 싹 없어져서 출력이 됐네요
실수형까지 하고 싶은데 어떻게 해야할까요?
빌더이상해 님이 쓰신 글 :
: 엔디안에 대한 개념이 약간 다르신것 같습니다.
: 엔디안은 문자냐 숫자냐에 따라 뒤집고 아니고가 아닙니다. 그래서 헷갈리시는듯 하네요
: 엔디안은 데이터가 메모리에 저장되는 바이트단위 순서입니다.
:
: 중요한건 바이트단위입니다. 해서 문자나 문자열은 상관없다??고 생각하실 수 있겠네요
: int형은 4바이트이므로 1,2,3,4 를 4,3,2,1로 변환하시면 됩니다.
: short은 2바이트이므로 1,2를 2,1로 변환하시면 됩니다.
: signed 인지 unsigned인지는 중요하지 않습니다. 바이트단위 이니까요 ㅋ
: 마찬가지로 float형은 4바이트이므로 1,2,3,4를 4,3,2,1로 뒤집으시면 됩니다.
: 8바이트짜리는 1,2,3,4,5,6,7,8 을 8,7,6,5,4,3,2,1로 뒤집으시면 됩니다. 정수던 실수던 뭐던상관없이 바이트단위로 자료형의 크기만큼 뒤집으면 됩니다.
:
: 질문자 님이 쓰신 글 :
: : Litte Endian 방식과 Big Endian 방식은 문자나 문자열은 상관없고 숫자형만 순서를 뒤집어서 보내는 걸로 알고있는데
: :
: : 정수형은 htonl해서 보내면 제대로 보내지는데 실수형은 혹시 소수점 윗단과 아랫단을 나눠서 보내야 하는건지
: :
: : 궁금합니다. 아니면 한번에 다 해서 보내야 하는건지 알고 싶어요
: :
: :
: :
|