Функция hex.Decode
Функция hex.Decode декодирует входные данные из шестнадцатеричного представления
в байтовый срез. Она принимает два параметра: первый параметр - срез байтов
для записи результата (целевой буфер), второй параметр - входной срез байтов
в шестнадцатеричном кодировании. Функция возвращает количество успешно
записанных байтов и ошибку error, если входные данные содержат
недопустимые символы или имеют нечетную длину.
Синтаксис
hex.Decode(dst, src)
Пример
Давайте декодируем шестнадцатеричную строку в байтовый срез:
package 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])
}
Результат выполнения кода:
"Decoded: Hello Go"
Пример
Декодируем шестнадцатеричную строку, содержащую недопустимый символ:
package 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])
}
Результат выполнения кода:
"Error: encoding/hex: invalid byte: U+0067 'g'"
Пример
Декодируем шестнадцатеричную строку с нечетной длиной:
package 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])
}
Результат выполнения кода:
"Error: encoding/hex: odd length hex string"
Смотрите также
-
функцию
hex.Encode,
которая кодирует байтовый срез в шестнадцатеричное представление -
функцию
hex.EncodeToString,
которая возвращает шестнадцатеричную строку -
функцию
hex.DecodeString,
которая декодирует строку в байтовый срез -
функцию
hex.Dump,
которая возвращает дамп данных в шестнадцатеричном формате