Переменная binary.LittleEndian

Переменная binary.LittleEndian представляет порядок байтов little-endian (от младшего к старшему) для работы с бинарными данными. Она реализует интерфейс binary.ByteOrder и предоставляет методы для чтения и записи целых чисел без знака в бинарном формате. Little-endian используется в архитектурах процессоров x86 и x86-64, а также во многих протоколах и форматах данных.

Синтаксис

gobinary.LittleEndian

Методы

gobinary.LittleEndian.Uint16(b []byte) uint16
binary.LittleEndian.Uint32(b []byte) uint32
binary.LittleEndian.Uint64(b []byte) uint64
binary.LittleEndian.PutUint16(b []byte, v uint16)
binary.LittleEndian.PutUint32(b []byte, v uint32)
binary.LittleEndian.PutUint64(b []byte, v uint64)

Пример

Давайте прочитаем 16-битное число из среза байтов в формате little-endian:

gopackage main

import (
  "encoding/binary"
  "fmt"
)

func main() {
  b := []byte{0xCD, 0xAB}
  res := binary.LittleEndian.Uint16(b)
  fmt.Println(res)
}

Результат выполнения кода:

go43981

Пример

Давайте запишем 32-битное число в срез байтов в формате little-endian:

gopackage main

import (
  "encoding/binary"
  "fmt"
)

func main() {
  b := make([]byte, 4)
  binary.LittleEndian.PutUint32(b, 0x01020304)
  fmt.Printf("%x", b)
}

Результат выполнения кода:

go"04030201"

Пример

Давайте сравним порядок байтов little-endian и big-endian для 64-битного числа:

gopackage main

import (
  "encoding/binary"
  "fmt"
)

func main() {
  b := make([]byte, 8)
  binary.LittleEndian.PutUint64(b, 0x0102030405060708)
  fmt.Printf("Little endian: %x\n", b)

  binary.BigEndian.PutUint64(b, 0x0102030405060708)
  fmt.Printf("Big endian:  %x\n", b)
}

Результат выполнения кода:

go"Little endian: 0807060504030201"
"Big endian:  0102030405060708"

Смотрите также

  • переменную binary.BigEndian,
    которая представляет порядок байтов big-endian
  • переменную binary.NativeEndian,
    которая представляет нативный порядок байтов системы
  • функцию binary.Read,
    которая читает структурированные бинарные данные
  • функцию binary.Write,
    которая записывает структурированные бинарные данные