C로 소켓 통신 짜는데 이상한 일이 생겼습니다. 한쪽에서 정수 하나 보내면 받는 쪽에서 완전 엉뚱한 값이 찍혀요. 예를 들어 0x12345678 보냈는데 받는 데선 0x78563412 이렇게 순서가 거꾸로 나오더라고요.


메모리를 덤프해 보니까 보내는 기계에선 이렇게 저장돼 있고,

78 56 34 12


받는 쪽 기대값은 이건데 순서가 안 맞습니다.

12 34 56 78


찾아보니 엔디안이란 게 있던데, 제 개발 PC는 x86이라 리틀엔디안이고 상대 장비는 다른 방식인가 봐요. 이게 기계마다 바이트 저장 순서가 달라서 생기는 문제 맞나요?


네트워크로 숫자 넘길 때는 항상 뭔가 변환을 해줘야 한다는 얘기도 봤는데, 구체적으로 어떤 함수를 써야 안전하게 주고받을 수 있는지 알려주시면 좋겠습니다.