Пакет hex
Обзор
Пакет hex реализует кодирование и декодирование в шестнадцатеричном формате.
Индекс
Файлы пакета
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/