Ответ
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
}