Что такое порядок байтов Big-Endian и где он применяется в бэкенд-разработке?

Ответ

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

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

Ключевое применение в бэкенде — сетевой порядок байтов (network byte order), который является стандартом для всех протоколов стека TCP/IP. Любые числовые значения в заголовках IP, TCP, UDP пакетов передаются в формате Big-Endian. Это обеспечивает одинаковую интерпретацию данных на устройствах с разной архитектурой.

Другие области применения:

  • Многие старые процессорные архитектуры (Motorola 68k, SPARC).
  • Некоторые форматы файлов (например, JPEG, PNG).

В Go для работы с Big-Endian используется пакет encoding/binary.

package main

import (
    "encoding/binary"
    "fmt"
)

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

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

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