Метод binary.ByteOrder.PutUint16

Метод PutUint16 интерфейса binary.ByteOrder записывает 16-битное беззнаковое целое число в байтовый срез. В первый параметр мы передаем байтовый срез длиной не менее 2 байт, во второй параметр мы передаем число типа uint16, которое нужно записать. Метод используется для сериализации целых чисел в бинарном формате с учетом порядка байтов (порядок от старшего к младшему или от младшего к старшему).

Синтаксис

gobinary.BigEndian.PutUint16(b, x)
binary.LittleEndian.PutUint16(b, x)

Пример использования BigEndian

Давайте запишем число 0x1234 в байтовый срез в порядке от старшего к младшему:

gopackage main

import (
  "encoding/binary"
  "fmt"
)

func main() {
  b := make([]byte, 2)
  x := uint16(0x1234)
  binary.BigEndian.PutUint16(b, x)
  fmt.Printf("%x\n", b)
}

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

go"1234"

Пример использования LittleEndian

Теперь запишем то же число 0x1234 в порядке от младшего к старшему:

gopackage main

import (
  "encoding/binary"
  "fmt"
)

func main() {
  b := make([]byte, 2)
  x := uint16(0x1234)
  binary.LittleEndian.PutUint16(b, x)
  fmt.Printf("%x\n", b)
}

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

go"3412"

Пример с чтением после записи

Запишем число, а затем прочитаем его обратно с помощью метода Uint16 для проверки корректности:

gopackage main

import (
  "encoding/binary"
  "fmt"
)

func main() {
  b := make([]byte, 2)
  original := uint16(0xABCD)

  binary.BigEndian.PutUint16(b, original)
  restored := binary.BigEndian.Uint16(b)

  fmt.Printf("original: %x, restored: %x\n", original, restored)
}

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

go"original: abcd, restored: abcd"

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

  • метод binary.ByteOrder.Uint16,
    который читает 16-битное число из байтового среза
  • метод binary.ByteOrder.PutUint32,
    который записывает 32-битное число
  • метод binary.ByteOrder.PutUint64,
    который записывает 64-битное число
  • функцию binary.Write,
    которая записывает структуру в бинарный формат