Spec-Zone.ru › Go

Пакет hex

  • import "encoding/hex"
  • Обзор
  • Индекс
  • Примеры

Обзор

Пакет hex реализует кодирование и декодирование в шестнадцатеричном формате.

Индекс

  • Переменные
  • func AppendDecode(dst, src []byte) ([]byte, error)
  • func AppendEncode(dst, src []byte) []byte
  • func Decode(dst, src []byte) (int, error)
  • func DecodeString(s string) ([]byte, error)
  • func DecodedLen(x int) int
  • func Dump(data []byte) string
  • func Dumper(w io.Writer) io.WriteCloser
  • func Encode(dst, src []byte) int
  • func EncodeToString(src []byte) string
  • func EncodedLen(n int) int
  • func NewDecoder(r io.Reader) io.Reader
  • func NewEncoder(w io.Writer) io.Writer
  • тип InvalidByteError
  • func (e InvalidByteError) Error() string

Примеры

Декодирование
Декодирование строки
Вывод
Dumper
Кодирование
Кодирование в строку

Файлы пакета

hex.go

Переменные

ErrLength сообщает об попытке декодирования входных данных нечётной длины, используя Decode или DecodeString. Базированный на потоке Decoder возвращает io.ErrUnexpectedEOF вместо ErrLength.

var ErrLength = errors.New("encoding/hex: odd length hex string")

func AppendDecode 1.22

func AppendDecode(dst, src []byte) ([]byte, error)

AppendDecode добавляет шестнадцатерично декодированные данные src к dst и возвращает расширенный буфер. Если входные данные некорректны, он возвращает частично декодированные данные src и ошибку.

func AppendEncode 1.22

func AppendEncode(dst, src []byte) []byte

AppendEncode добавляет шестнадцатерично закодированные данные src к dst и возвращает расширенный буфер.

func Decode

func Decode(dst, src []byte) (int, error)

Decode декодирует src в DecodedLen(len(src)) байт, возвращая фактическое количество байт, записанных в dst.

Decode ожидает, что src содержит только шестнадцатеричные символы и имеет чётную длину. Если входные данные некорректны, Decode возвращает количество декодированных байт перед ошибкой.

Пример

Код:

src := []byte("48656c6c6f20476f7068657221")

dst := make([]byte, hex.DecodedLen(len(src)))
n, err := hex.Decode(dst, src)
if err != nil {
    log.Fatal(err)
}

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

Вывод:

Hello Gopher!

func DecodeString

func DecodeString(s string) ([]byte, error)

DecodeString возвращает байты, представленные шестнадцатеричной строкой s.

DecodeString ожидает, что src содержит только шестнадцатеричные символы и имеет чётную длину. Если входные данные некорректны, DecodeString возвращает декодированные байты перед ошибкой.

Пример

Код:

const s = "48656c6c6f20476f7068657221"
decoded, err := hex.DecodeString(s)
if err != nil {
    log.Fatal(err)
}

fmt.Printf("%s\n", decoded)

Вывод:

Hello Gopher!

func DecodedLen

func DecodedLen(x int) int

DecodedLen возвращает длину декодирования x байт исходных данных. Конкретно, возвращает x / 2.

func Dump

func Dump(data []byte) string

Dump возвращает строку, содержащую шестнадцатеричный вывод заданных данных. Формат шестнадцатеричного вывода соответствует выводу `hexdump -C` в командной строке.

Пример

Код:

content := []byte("Go is an open source programming language.")

fmt.Printf("%s", hex.Dump(content))

Вывод:

00000000  47 6f 20 69 73 20 61 6e  20 6f 70 65 6e 20 73 6f  |Go is an open so|
00000010  75 72 63 65 20 70 72 6f  67 72 61 6d 6d 69 6e 67  |urce programming|
00000020  20 6c 61 6e 67 75 61 67  65 2e                    | language.|

func Dumper

func Dumper(w io.Writer) io.WriteCloser

Dumper возвращает io.WriteCloser, который записывает шестнадцатеричный вывод всех записанных данных в w. Формат вывода соответствует выводу `hexdump -C` в командной строке.

Пример

Код:

lines := []string{
    "Go is an open source programming language.",
    "\n",
    "We encourage all Go users to subscribe to golang-announce.",
}

stdoutDumper := hex.Dumper(os.Stdout)

defer stdoutDumper.Close()

for _, line := range lines {
    stdoutDumper.Write([]byte(line))
}

Вывод:

00000000  47 6f 20 69 73 20 61 6e  20 6f 70 65 6e 20 73 6f  |Go is an open so|
00000010  75 72 63 65 20 70 72 6f  67 72 61 6d 6d 69 6e 67  |urce programming|
00000020  20 6c 61 6e 67 75 61 67  65 2e 0a 57 65 20 65 6e  | language..We en|
00000030  63 6f 75 72 61 67 65 20  61 6c 6c 20 47 6f 20 75  |courage all Go u|
00000040  73 65 72 73 20 74 6f 20  73 75 62 73 63 72 69 62  |sers to subscrib|
00000050  65 20 74 6f 20 67 6f 6c  61 6e 67 2d 61 6e 6e 6f  |e to golang-anno|
00000060  75 6e 63 65 2e                                    |unce.|

func Encode

func Encode(dst, src []byte) int

Encode кодирует src в EncodedLen(len(src)) байт dst. Для удобства, возвращает количество записанных байт в dst, но это значение всегда равно EncodedLen(len(src)). Encode реализует шестнадцатеричное кодирование.

Пример

Код:

src := []byte("Hello Gopher!")

dst := make([]byte, hex.EncodedLen(len(src)))
hex.Encode(dst, src)

fmt.Printf("%s\n", dst)

Вывод:

48656c6c6f20476f7068657221

func EncodeToString

func EncodeToString(src []byte) string

EncodeToString возвращает шестнадцатеричное кодирование src.

Пример

Код:

src := []byte("Hello")
encodedStr := hex.EncodeToString(src)

fmt.Printf("%s\n", encodedStr)

Вывод:

48656c6c6f

func EncodedLen

func EncodedLen(n int) int

EncodedLen возвращает длину кодирования n байт исходных данных. Конкретно, возвращает n * 2.

func NewDecoder 1.10

func NewDecoder(r io.Reader) io.Reader

NewDecoder возвращает io.Reader, который декодирует шестнадцатеричные символы из r. NewDecoder ожидает, что r содержит только чётное количество шестнадцатеричных символов.

func NewEncoder 1.10

func NewEncoder(w io.Writer) io.Writer

NewEncoder возвращает io.Writer, который записывает строчные шестнадцатеричные символы в w.

тип InvalidByteError

Значения InvalidByteError описывают ошибки, возникшие из-за некорректного байта в шестнадцатеричной строке.

type InvalidByteError byte

func (InvalidByteError) Error

func (e InvalidByteError) Error() string

© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/encoding/hex/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API