✅ 목표 (Goal)

빅엔디안과 리틀엔디안이 미묘한 장단점이 있기는 하지만,

오늘날의 프로세서는 여러 바이트를 동시에 읽어 처리하므로 사실상 별 의미가 없다.

그렇다면 “별로 알필요가 없지 않느냐” 고 반문할수 있는데,

어떤 경우에는 엔디안 처리 방식이 문제가 될때도 있기 때문이다.

과연 어느때일까?

대표적인 예로 네트워크 통신할 때 문제가 된다. 빅엔디안을 쓰건 리틀 엔디안을 쓰건 단일 시스템에서는 아무런 문제가 없지만,

데이터를 송수신할 때 송신시스템은 빅엔디안 방식이고 수신 시스템은 리틀 엔디안 방식이라면, 데이터가 모두 깨진다.

즉, 단일 플랫폼에서는 현명한 개발자라면 (이미 엔디안 방식을 알고 있어 적용을 했겠지만 그렇지 않다 하더라도) 데이터가 깨지는 값을 유심히 보고, 엔디안 방식이 서로 맞지 않다는 것을 알것이고 이런 경우 함수등을 통해서 바꿔주면 깔끔하게 해결된다. 예를 들어 C언어에서 htonl(host to network)함수등을 지원한다.

참고로, 네트워크 통신시 엔디안보다 더 골치아픈건 데이터 타입의 바이트수가 다를 경우이다. 예를 들어 A시스템은 int가 2바이트고 B 시스템은 4바이트라면, 문제가 더 심각하다. 엔디안의 경우 데이터가 오기는 정확히 오지만 깨져서 오는건데, 데이터 바이트가 다르면 운좋으면 (이게 운이 좋은게 아니라 더 심각한거지만) 잘 읽지만 운나쁘면 엉망이 된다. 예를 들어 100을 보내면 잘 읽는데, 40000을 보내면 0으로 읽힌다거나.