Функция hex.NewEncoder

Функция hex.NewEncoder создает новый потоковый кодировщик, который записывает шестнадцатеричное представление переданных данных в указанный io.Writer. В качестве единственного параметра функция принимает io.Writer, в который будет производиться запись, и возвращает io.Writer, через который можно передавать данные для кодирования.

Синтаксис

gohex.NewEncoder(w io.Writer) io.Writer

Пример

Давайте закодируем строку 'abcde' в шестнадцатеричный формат с использованием потокового кодировщика:

gopackage main

import (
  "encoding/hex"
  "fmt"
  "strings"
)

func main() {
  var buf strings.Builder
  encoder := hex.NewEncoder(&buf)
  encoder.Write([]byte("abcde"))
  fmt.Println(buf.String())
}

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

go"6162636465"

В этом примере мы создаем буфер, передаем его в кодировщик, записываем данные и получаем шестнадцатеричную строку.

Пример

Давайте закодируем массив байтов в шестнадцатеричный формат с помощью потокового кодировщика:

gopackage main

import (
  "encoding/hex"
  "fmt"
  "strings"
)

func main() {
  var buf strings.Builder
  encoder := hex.NewEncoder(&buf)
  data := []byte{0x01, 0x02, 0x03, 0x0F}
  encoder.Write(data)
  fmt.Println(buf.String())
}

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

go"0102030f"

В этом примере каждый байт преобразуется в двухсимвольное шестнадцатеричное представление в нижнем регистре.

Пример

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

gopackage main

import (
  "encoding/hex"
  "fmt"
  "strings"
)

func main() {
  var buf strings.Builder
  encoder := hex.NewEncoder(&buf)
  encoder.Write([]byte("Hello "))
  encoder.Write([]byte("World"))
  fmt.Println(buf.String())
}

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

go"48656c6c6f20576f726c64"

Потоковый кодировщик позволяет обрабатывать данные последовательно, записывая их частями без потери производительности.

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

  • функцию hex.Encode,
    которая кодирует данные в шестнадцатеричный формат в слайс байтов
  • функцию hex.EncodeToString,
    которая кодирует данные в шестнадцатеричную строку
  • функцию hex.Decoder,
    которая декодирует шестнадцатеричные данные обратно в байты
  • функцию hex.Dump,
    которая возвращает шестнадцатеричный дамп данных с адресами и ASCII