Функция hex.DecodeString

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

Синтаксис

gohex.DecodeString(str)

Пример

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

gopackage main

import (
  "encoding/hex"
  "fmt"
)

func main() {
  str := "48656c6c6f"
  res, err := hex.DecodeString(str)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println(res)
  fmt.Printf("%s\n", res)
}

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

go[72 101 108 108 111]
"Hello"

Пример

Давайте декодируем шестнадцатеричную строку с пробелами "48 65 6c 6c 6f":

gopackage main

import (
  "encoding/hex"
  "fmt"
)

func main() {
  str := "48 65 6c 6c 6f"
  res, err := hex.DecodeString(str)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Printf("%s\n", res)
}

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

go"Hello"

Пример

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

gopackage main

import (
  "encoding/hex"
  "fmt"
)

func main() {
  str := "48656c6c6g"
  res, err := hex.DecodeString(str)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println(res)
}

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

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

Пример

Давайте декодируем шестнадцатеричную строку с префиксом "0x" - функция сама обработает его:

gopackage main

import (
  "encoding/hex"
  "fmt"
)

func main() {
  str := "0x48656c6c6f"
  res, err := hex.DecodeString(str)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Printf("%s\n", res)
}

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

go"Hello"

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

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