Метод binary.ByteOrder.PutUint16
Метод PutUint16 интерфейса binary.ByteOrder
записывает 16-битное беззнаковое целое число в байтовый срез.
В первый параметр мы передаем байтовый срез длиной не менее 2 байт,
во второй параметр мы передаем число типа uint16,
которое нужно записать. Метод используется для сериализации
целых чисел в бинарном формате с учетом порядка байтов
(порядок от старшего к младшему или от младшего к старшему).
Синтаксис
binary.BigEndian.PutUint16(b, x)
binary.LittleEndian.PutUint16(b, x)
Пример использования BigEndian
Давайте запишем число 0x1234 в байтовый срез
в порядке от старшего к младшему:
package main
import (
"encoding/binary"
"fmt"
)
func main() {
b := make([]byte, 2)
x := uint16(0x1234)
binary.BigEndian.PutUint16(b, x)
fmt.Printf("%x\n", b)
}
Результат выполнения кода:
"1234"
Пример использования LittleEndian
Теперь запишем то же число 0x1234 в порядке
от младшего к старшему:
package main
import (
"encoding/binary"
"fmt"
)
func main() {
b := make([]byte, 2)
x := uint16(0x1234)
binary.LittleEndian.PutUint16(b, x)
fmt.Printf("%x\n", b)
}
Результат выполнения кода:
"3412"
Пример с чтением после записи
Запишем число, а затем прочитаем его обратно с помощью
метода Uint16 для проверки корректности:
package 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)
}
Результат выполнения кода:
"original: abcd, restored: abcd"
Смотрите также
-
метод
binary.ByteOrder.Uint16,
который читает 16-битное число из байтового среза -
метод
binary.ByteOrder.PutUint32,
который записывает 32-битное число -
метод
binary.ByteOrder.PutUint64,
который записывает 64-битное число -
функцию
binary.Write,
которая записывает структуру в бинарный формат