big engian и little engian

например есть число 0xaabbccdd это 4 байтное число. я так понимаю это вроде как big engian, тогда в little engian оно будет иметь вид 0xbbaaddcc? мне надо узнать как выглядит число в двух engian. и я не помню, но intel это же little engian?


Ответы (1 шт):

Автор решения: Arty

4-х байтное число 0x12345678 в литтл эндиан (little endian) будет уложено в памяти слева направо как байты 0x78, 0x56, 0x34, 0x12. В биг эндиан (big endian) будут в памяти байты 0x12, 0x34, 0x56, 0x78.

В Intel используется little endian.

Какое бы по размеру число не было, 2-х байтное (uint16_t) или 4-х байтное (uint32_t) или 8-байтное (uint64_t), во всех случаях little endian укладывает его в памяти слева направо начиная с младших разрядов числа и под ряд до старших разрядов числа, а big endian укладывает ровно в противоположном порядке, т.е. big endian это обратный порядок байт порядка little endian.

Т.е. 2х-байтное 0x1234 в памяти little endian это 0x34, 0x12, пример 4х-байтного привёл в начале, 8-байтное 0x123456789ABCDEF0 в little endian будет в памяти 0xF0, 0xDE, 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12.

Дословно с английского little endian означает "с малого конца", т.е. означает что в памяти байты начинаются с младших (малых) разрядов числа. Соответственно big endian означает "с большого конца", т.е. байты в памяти начинаются со старших (больших) разрядов числа.

В русском endianness называют "порядок байт".

→ Ссылка