Один набор байтов — два числа

Байт — это группа из восьми бит, но многие значения занимают несколько байтов. Например, число `0x1234` состоит из двух байтов: `0x12` и `0x34`. Если первым записан старший байт, последовательность будет `12 34` — это порядок от старшего к младшему, или big-endian. Если первым идёт младший байт, получится `34 12` — порядок little-endian.

Сами байты при этом не меняются. Меняется правило, по которому компьютер связывает их с числом: прочитав `12 34` как little-endian, он получит `0x3412`, а не `0x1234`. Для одного байта такой неоднозначности нет.

Где возникает путаница

Внутри одной системы процессор обычно придерживается определённого порядка байтов, но файл или сообщение по сети могут прийти из другой системы. Если программа знает лишь, что значение занимает два байта, но не знает их порядок, она может получить другое число. Ошибка не обязательно вызовет сбой: например, длина записи или номер цвета просто окажутся неверными, и последствия проявятся позднее.

Поэтому формат данных должен закреплять правило: явно задавать порядок байтов либо задавать способ, позволяющий его определить. Это часть формата, а не свойство самого числа. При чтении файла программа сначала должна разобраться, как его авторы расположили байты, и лишь затем собрать из них значение.

Почему это важно при обмене данными

Порядок байтов особенно заметен на границе между устройствами и программами: отправитель и получатель могут представлять многобайтовые значения по-разному. Согласованное правило делает обмен предсказуемым независимо от устройства. Иначе одна и та же последовательность в памяти выглядит одинаково, но после чтения превращается в разные значения — ошибка, которую часто трудно заметить, потому что все байты на месте.