Функция hex.NewDecoder
Функция hex.NewDecoder создает новый декодер, который читает шестнадцатеричные данные
из переданного io.Reader и возвращает io.Reader,
из которого можно читать декодированные двоичные данные.
Функция принимает один параметр - источник шестнадцатеричных данных,
и возвращает декодер, реализующий интерфейс io.Reader.
Синтаксис
hex.NewDecoder(r io.Reader) io.Reader
Пример
Давайте декодируем шестнадцатеричную строку в байтовый срез:
package 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)
}
Результат выполнения кода:
"Hello World"
Пример
Давайте декодируем данные из шестнадцатеричной строки и выведем их как байты:
package 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)
}
Результат выполнения кода:
[1 2 3 4 5]
Пример
Давайте декодируем шестнадцатеричные данные и проверим количество прочитанных байтов:
package 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)
}
Результат выполнения кода:
3
"www"
Смотрите также
-
функцию
hex.NewEncoder,
которая создает кодировщик для преобразования данных в шестнадцатеричный вид -
функцию
hex.Encode,
которая кодирует байтовый срез в шестнадцатеричный срез байтов -
функцию
hex.EncodeToString,
которая кодирует байтовый срез в шестнадцатеричную строку -
функцию
hex.DecodeString,
которая декодирует шестнадцатеричную строку в байтовый срез