В этом кратком посте мы поговорим о порядке байтов.

Байт обычно состоит из 8 бит и совокупность байтов образуют слово. Следовательно, байты в слове можно нумеровать либо слева направо, либо справа налево. Это соглашение о порядке байтов на машине называется ее порядком байтов.

Представьте себе переменную типа int, которая имеет 32 бита (4 байта), хранящихся в непрерывной последовательности ячеек памяти 0, 1, 2, 3. Давайте представим, что значение этой переменной будет 20555768 (в шестнадцатеричной системе счисления 0x0139A7F8) и двоичное представление этого числа:

Little Endian

Некоторые машины хранят байты в порядке от младшего до самого старшего, и это называется прямым порядком байтов. Здесь младший байт имеет шестнадцатеричное значение 0xF8, а старший байт 0x01.

Big Endian

В формате с прямым порядком байтов байты отсортированы от наиболее значимого к наименее значимому.

Как программисты, мы редко беспокоимся о порядке байтов, но это становится проблемой, когда машина с прямым порядком байтов пытается отправить двоичные данные на машину с прямым порядком байтов по сети и наоборот. В качестве решения TCP / IP требует, чтобы вы упорядочили байты в сетевом порядке байтов (который является прямым порядком байтов) до того, как любые двоичные целые числа в заголовках TCP / IP будут отправлены через сеть.

использованная литература

Https://www.amazon.com/Structured-Computer-Organization-Andrew-Tanenbaum/dp/812034720X/ref=asap_bc?ie=UTF8