Функция binary.Write
Функция binary.Write записывает двоичное представление
переданных данных в поток io.Writer. В первый параметр
функция принимает поток для записи, во второй - порядок байтов
(binary.ByteOrder), в третий - данные для записи.
Функция возвращает ошибку, если запись не удалась.
Синтаксис
binary.Write(w io.Writer, order binary.ByteOrder, data any) error
Пример
Давайте запишем целое число в буфер и получим его двоичное представление:
package main
import (
"bytes"
"encoding/binary"
"fmt"
)
func main() {
buf := new(bytes.Buffer)
num := int32(42)
err := binary.Write(buf, binary.LittleEndian, num)
if err != nil {
fmt.Println("error:", err)
return
}
fmt.Println(buf.Bytes())
}
Результат выполнения кода:
[42 0 0 0]
Пример
Давайте запишем структуру с несколькими полями разных типов:
package main
import (
"bytes"
"encoding/binary"
"fmt"
)
func main() {
buf := new(bytes.Buffer)
type Data struct {
ID int16
Age int32
Flag bool
}
data := Data{
ID: 1024,
Age: 30,
Flag: true,
}
err := binary.Write(buf, binary.BigEndian, data)
if err != nil {
fmt.Println("error:", err)
return
}
fmt.Println(buf.Bytes())
}
Результат выполнения кода:
[4 0 0 0 0 30 1]
Пример
Давайте запишем несколько значений подряд в один буфер:
package main
import (
"bytes"
"encoding/binary"
"fmt"
)
func main() {
buf := new(bytes.Buffer)
num1 := uint16(256)
num2 := int64(-1000)
num3 := float32(3.14)
err := binary.Write(buf, binary.LittleEndian, num1)
if err != nil {
fmt.Println("error:", err)
return
}
err = binary.Write(buf, binary.LittleEndian, num2)
if err != nil {
fmt.Println("error:", err)
return
}
err = binary.Write(buf, binary.LittleEndian, num3)
if err != nil {
fmt.Println("error:", err)
return
}
fmt.Println(buf.Bytes())
}
Результат выполнения кода:
[0 1 24 252 255 255 255 255 255 255 195 245 72 64]
Смотрите также
-
функцию
binary.Read,
которая читает двоичные данные из потока -
функцию
binary.Size,
которая возвращает размер данных при двоичной кодировке -
константу
binary.BigEndian,
которая представляет порядок байтов от старшего к младшему -
константу
binary.LittleEndian,
которая представляет порядок байтов от младшего к старшему