Еще в раннем железном веке древние столкнулись с этой проблемой, когда пытались объединить примитивные миникомпьютеры PDP-11 с другими примитивными компьютерами. PDP-11 был первым компьютером с прямым порядком байтов, в то время как большинство других в то время были с прямым порядком байтов.
Чтобы решить эту проблему, они раз и навсегда разработали концепцию сетевого порядка байтов (всегда big-Endia) и соответствующие макросы сетевого порядка байтов ntohs (), ntohl (), htons () и htonl (). , Код, написанный с этими макросами, всегда будет "давать правильный ответ".
Положитесь на вашего внешнего поставщика, чтобы использовать макросы в своем коде, и файл, который они предоставляют, вы всегда будете с прямым порядком байтов, даже если они переключатся на компьютер с прямым порядком байтов. Перепишите анализатор, который вам дали, чтобы использовать макросы, и вы всегда сможете прочитать их файл, даже если переключитесь на компьютер с прямым порядком байтов.
На эту конкретную проблему было потрачено действительно огромное количество времени программиста. Бывают дни, когда я думаю, что можно привести веские аргументы в пользу того, чтобы повесить дизайнера PDP-11, который принял решение о функции с прямым порядком байтов.