Что такое порядок байтов Little-Endian и где он преимущественно используется?

Ответ

Little-Endian (обратный порядок байтов) — это формат записи многобайтовых чисел, при котором самый младший байт записывается по младшему адресу в памяти.

Например, 32-битное число 0x12345678 будет представлено в памяти как последовательность байтов:
78 56 34 12

Основная область применения — современные процессорные архитектуры. Большинство настольных компьютеров, ноутбуков и серверов, на которых работают бэкенд-приложения, используют архитектуры x86 и x86-64 (Intel, AMD), которые являются Little-Endian. Архитектура ARM (используется в большинстве мобильных устройств и на серверах Apple Silicon) также преимущественно работает в режиме Little-Endian.

Из-за этого Little-Endian часто называют "нативным" порядком байтов для большинства разработчиков.

Примеры использования:

  • Внутреннее представление чисел в памяти на x86/x64 и ARM процессорах.
  • Многие форматы файлов (например, BMP, ELF исполняемые файлы в Linux).

Важно: В сетевых протоколах, таких как TCP/IP, используется Big-Endian, поэтому при отправке данных по сети часто требуется преобразование из "нативного" Little-Endian в сетевой Big-Endian.

package main

import (
    "encoding/binary"
    "fmt"
)

func main() {
    num := uint32(0x12345678)
    buf := make([]byte, 4)

    // Кодируем число в срез байтов в формате Little-Endian
    binary.LittleEndian.PutUint32(buf, num)

    fmt.Printf("Число в Little-Endian: % xn", buf) // Вывод: 78 56 34 12
}