Функция hex.Decode

Функция hex.Decode декодирует входные данные из шестнадцатеричного представления в байтовый срез. Она принимает два параметра: первый параметр - срез байтов для записи результата (целевой буфер), второй параметр - входной срез байтов в шестнадцатеричном кодировании. Функция возвращает количество успешно записанных байтов и ошибку error, если входные данные содержат недопустимые символы или имеют нечетную длину.

Синтаксис

gohex.Decode(dst, src)

Пример

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

gopackage main

import (
  "encoding/hex"
  "fmt"
)

func main() {
  src := []byte("48656c6c6f20476f")
  dst := make([]byte, hex.DecodedLen(len(src)))

  n, err := hex.Decode(dst, src)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  fmt.Printf("Decoded: %s\n", dst[:n])
}

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

go"Decoded: Hello Go"

Пример

Декодируем шестнадцатеричную строку, содержащую недопустимый символ:

gopackage main

import (
  "encoding/hex"
  "fmt"
)

func main() {
  src := []byte("48656c6c6f20476g")
  dst := make([]byte, hex.DecodedLen(len(src)))

  n, err := hex.Decode(dst, src)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  fmt.Printf("Decoded: %s\n", dst[:n])
}

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

go"Error: encoding/hex: invalid byte: U+0067 'g'"

Пример

Декодируем шестнадцатеричную строку с нечетной длиной:

gopackage main

import (
  "encoding/hex"
  "fmt"
)

func main() {
  src := []byte("48656c6c6f2047")
  dst := make([]byte, hex.DecodedLen(len(src)))

  n, err := hex.Decode(dst, src)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  fmt.Printf("Decoded: %s\n", dst[:n])
}

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

go"Error: encoding/hex: odd length hex string"

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

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