> Что такое big-endian и little-endian (Go)

Уровень: junior · Роль: backend · Категория: Технические вопросы

Компании: Фабрика решений

Стек: Go

> Пример ответа

Big-endian и little-endian - это два способа хранения многобайтовых данных в памяти, определяющие порядок байтов (endianness). В big-endian старший байт (most significant byte) хранится по младшему адресу, а младший - по старшему. В little-endian наоборот: младший байт (least significant byte) идет первым.

В Go порядок байтов важен при работе с сетевыми протоколами, бинарными файлами или аппаратными интерфейсами. Например, для чтения 32-битного целого числа из среза байтов в little-endian используется binary.LittleEndian.Uint32(data), а для big-endian — binary.BigEndian.Uint32(data). Сетевой порядок байтов (network byte order) традиционно big-endian, поэтому при отправке данных по сети часто применяют binary.BigEndian.PutUint32.

Пример на Go:

GO
package main
import (
"encoding/binary"
"fmt"
)
func main() {
val := uint32(0x12345678)
buf := make([]byte, 4)
binary.BigEndian.PutUint32(buf, val)
fmt.Printf("Big-endian: %x\n", buf) // [12 34 56 78]
binary.LittleEndian.PutUint32(buf, val)
fmt.Printf("Little-endian: %x\n", buf) // [78 56 34 12]
}

Выбор порядка зависит от архитектуры процессора (x86 - little-endian, многие RISC - big-endian) и протокола. В Go encoding/binary абстрагирует эту разницу, позволяя явно указывать порядок.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью