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

Переменная binary.NativeEndian предоставляет доступ к порядку байт, который используется в текущей системе. Она возвращает значение типа binary.ByteOrder, которое может быть либо binary.LittleEndian, либо binary.BigEndian, в зависимости от архитектуры процессора. Эта переменная особенно полезна при работе с бинарными данными, когда важно знать, как интерпретируются многобайтовые числа.

Синтаксис

gobinary.NativeEndian

Пример

Давайте проверим, какой порядок байт используется в текущей системе:

gopackage main

import (
  "encoding/binary"
  "fmt"
)

func main() {
  if binary.NativeEndian == binary.LittleEndian {
    fmt.Println("Система использует little-endian")
  } else if binary.NativeEndian == binary.BigEndian {
    fmt.Println("Система использует big-endian")
  }
}

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

go"Система использует little-endian"

Пример

Давайте используем binary.NativeEndian для записи числа в байтовый слайс с учетом порядка байт текущей системы:

gopackage main

import (
  "encoding/binary"
  "fmt"
)

func main() {
  value := uint32(0x12345678)
  bytes := make([]byte, 4)
  binary.NativeEndian.PutUint32(bytes, value)

  fmt.Printf("Число %x в байтах: %x\n", value, bytes)
}

Результат выполнения кода на little-endian системе:

go"Число 12345678 в байтах: [78 56 34 12]"

Пример

Давайте прочитаем число из байтового слайса, используя порядок байт текущей системы:

gopackage main

import (
  "encoding/binary"
  "fmt"
)

func main() {
  bytes := []byte{0x78, 0x56, 0x34, 0x12}
  value := binary.NativeEndian.Uint32(bytes)

  fmt.Printf("Байты %x в число: %x\n", bytes, value)
}

Результат выполнения кода на little-endian системе:

go"Байты [78 56 34 12] в число: 12345678"

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

  • переменную binary.BigEndian,
    которая представляет порядок байт от старшего к младшему
  • переменную binary.LittleEndian,
    которая представляет порядок байт от младшего к старшему
  • функцию binary.Size,
    которая возвращает размер данных в байтах
  • функцию binary.Read,
    которая читает структурированные бинарные данные