Пакет hex реализует шестнадцатеричное кодирование и декодирование.
Функция Decode
func Decode(dst, src []byte) (int, error)
Decode декодирует src в DecodedLen(len(src)) байты, возвращая фактическое количество байтов, записанных в dst.
Decode ожидает, что src содержит только шестнадцатеричные символы, а src имеет четную длину. Если входные данные искажены, Decode возвращает количество байтов, декодированных до ошибки.
Пример использования hex.Decode
package main
import (
"encoding/hex"
"fmt"
"log"
)
func main() {
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!
Функция DecodeString
func DecodeString(s string) ([]byte, error)
DecodeString возвращает байты, представленные шестнадцатеричной строкой s.
DecodeString ожидает, что src содержит только шестнадцатеричные символы и что src имеет четную длину. Если входные данные искажены, DecodeString возвращает байты, декодированные до ошибки.
Пример использования hex.DecodeString
package main
import (
"encoding/hex"
"fmt"
"log"
)
func main() {
const s = "48656c6c6f20476f7068657221"
decoded, err := hex.DecodeString(s)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", decoded)
}
Вывод:
Hello Gopher!
Функция Encode
func Encode(dst, src []byte) int
Encode кодирует src в EncodedLen(len(src)) байты dst. Для удобства он возвращает количество байтов, записанных в dst, но это значение всегда EncodedLen(len(src)). Кодирование реализует шестнадцатеричное кодирование.
Пример использования hex.Encode
package main
import (
"encoding/hex"
"fmt"
)
func main() {
src := []byte("Hello Gopher!")
dst := make([]byte, hex.EncodedLen(len(src)))
hex.Encode(dst, src)
fmt.Printf("%s\n", dst)
}
Вывод:
48656c6c6f20476f7068657221
Функция EncodeToString
func EncodeToString(src []byte) string
EncodeToString возвращает шестнадцатеричное кодирование src.
Пример использования hex.EncodeToString
package main
import (
"encoding/hex"
"fmt"
)
func main() {
src := []byte("Hello")
encodedStr := hex.EncodeToString(src)
fmt.Printf("%s\n", encodedStr)
}
Вывод:
48656c6c6f
Функция Dump
func Dump(data []byte) string
Dump возвращает строку, содержащую шестнадцатеричный дамп данных. Формат шестнадцатеричного дампа совпадает с выводом `hexdump -C` в командной строке.
Пример использования hex.Dump
package main
import (
"encoding/hex"
"fmt"
)
func main() {
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.|
Функция Dumper
func Dumper(w io.Writer) io.WriteCloser
Dumper возвращает WriteCloser, который записывает шестнадцатеричный дамп всех записанных данных в w. Формат дампа соответствует выводу `hexdump -C` в командной строке.
Пример использования hex.Dumper
package main
import (
"encoding/hex"
"os"
)
func main() {
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.|
Читайте также:
- Пакет base64 в Golang
- Работа с базами данных в Golang. Пакет database/sql в Golang
- Строка, байт, руна, символ в Golang
Комментариев нет:
Отправить комментарий