int main(int argc, char *argv[])
{
u_short x1 = 0x1234;
printf("x1 -> ntohs(x1) : 0x%x 0x%x \n", x1,ntohs(x1));
}
이 예제에서 ntohs()를 사용하면 결과가 3412가 나오는데 왜 이렇게 나오는거야??
내 pc 바이트 정렬 -> ntohs() -> 읽을때 리틀 엔디안으로 읽음
이렇게 해서 이런 결과가 나오는거야?
당최모르겠음 형님들 좀 도와주세요
무슨일하는데
ntohs가 빅엔디안에서 리틀엔디안으로 저장하는건데 당연히 리틀엔디안으로 읽어야지
걍 저건 호환성을 위해 존재하는 거고 니 시스템이 le니까 바이트 순서 뒤집는거임. be쓰는 시스템에서 저걸 돌리면 값이 똑같이 찍힐거다
근데 그럼 내 시스템이 리틀엔디안 써서 1234 가 ntohs() 썻을때 3412 로 뒤집어 졌으면 htons() 를 쓰면 결과로 1234가 나와야 되는거 아니야?? 근데 왜 htons()를 쓰면 3412가 나오지;;
뭔 개소리야. ntohs(htons(x)) 써야 똑바로 나오지. 이름만 다르지 둘다 하는 짓 똑같다고. 애초에 딸랑 인자 하나 받는데서 이게 뒤집힌놈인지 정상적인 놈인지 함수에서 어떻게 암???? 걍 들어오면 쳐뒤집는거지
원래 그래
바이트 별로 처리 하나 보네