Функция hex.NewDecoder

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

Синтаксис

gohex.NewDecoder(r io.Reader) io.Reader

Пример

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

gopackage main

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

func main() {
  src := strings.NewReader("48656c6c6f20576f726c64")
  decoder := hex.NewDecoder(src)
  
  res, err := io.ReadAll(decoder)
  if err != nil {
    panic(err)
  }
  
  fmt.Printf("%s\n", res)
}

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

go"Hello World"

Пример

Давайте декодируем данные из шестнадцатеричной строки и выведем их как байты:

gopackage main

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

func main() {
  src := strings.NewReader("0102030405")
  decoder := hex.NewDecoder(src)
  
  res, err := io.ReadAll(decoder)
  if err != nil {
    panic(err)
  }
  
  fmt.Printf("%v\n", res)
}

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

go[1 2 3 4 5]

Пример

Давайте декодируем шестнадцатеричные данные и проверим количество прочитанных байтов:

gopackage main

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

func main() {
  src := strings.NewReader("777777")
  decoder := hex.NewDecoder(src)
  
  buf := make([]byte, 3)
  n, err := decoder.Read(buf)
  if err != nil {
    panic(err)
  }
  
  fmt.Printf("%d\n", n)
  fmt.Printf("%s\n", buf)
}

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

go3
"www"

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

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