РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1196 of 1593 menu

Функция 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,
    которая представляет порядок байтов от младшего к старшему
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить