Spec-Zone.ru › Go

Пакет base32

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

Обзор

Пакет base32 реализует кодирование base32, как указано в RFC 4648.

Индекс

  • Константы
  • Переменные
  • func NewDecoder(enc *Encoding, r io.Reader) io.Reader
  • func NewEncoder(enc *Encoding, w io.Writer) io.WriteCloser
  • тип CorruptInputError
  • func (e CorruptInputError) Error() string
  • тип Encoding
  • func NewEncoding(encoder string) *Encoding
  • func (enc *Encoding) AppendDecode(dst, src []byte) ([]byte, error)
  • func (enc *Encoding) AppendEncode(dst, src []byte) []byte
  • func (enc *Encoding) Decode(dst, src []byte) (n int, err error)
  • func (enc *Encoding) DecodeString(s string) ([]byte, error)
  • func (enc *Encoding) DecodedLen(n int) int
  • func (enc *Encoding) Encode(dst, src []byte)
  • func (enc *Encoding) EncodeToString(src []byte) string
  • func (enc *Encoding) EncodedLen(n int) int
  • func (enc Encoding) WithPadding(padding rune) *Encoding

Примеры

Encoding.Decode
Encoding.DecodeString
Encoding.Encode
Encoding.EncodeToString
NewEncoder

Файлы пакета

base32.go

Константы

const (
    StdPadding rune = '=' // Standard padding character
    NoPadding  rune = -1  // No padding
)

Переменные

HexEncoding — это «расширенный шестнадцатеричный алфавит», определенный в RFC 4648. Он обычно используется в DNS.

var HexEncoding = NewEncoding("0123456789ABCDEFGHIJKLMNOPQRSTUV")

StdEncoding — стандартное кодирование base32, как определено в RFC 4648.

var StdEncoding = NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567")

func NewDecoder

func NewDecoder(enc *Encoding, r io.Reader) io.Reader

NewDecoder создает новый декодер потока base32.

func NewEncoder

func NewEncoder(enc *Encoding, w io.Writer) io.WriteCloser

NewEncoder возвращает новый кодировщик потока base32. Данные, записанные в возвращаемый объект writer, будут закодированы с помощью enc и затем записаны в w. Кодирования base32 работают с 5-байтовыми блоками; по завершении записи вызывающая сторона должна закрыть возвращаемый кодировщик, чтобы выполнить сброс любых частично записанных блоков.

Пример

Код:

input := []byte("foo\x00bar")
encoder := base32.NewEncoder(base32.StdEncoding, os.Stdout)
encoder.Write(input)
// Must close the encoder when finished to flush any partial blocks.
// If you comment out the following line, the last partial block "r"
// won't be encoded.
encoder.Close()

Вывод:

MZXW6ADCMFZA====

тип CorruptInputError

type CorruptInputError int64

func (CorruptInputError) Error

func (e CorruptInputError) Error() string

тип Encoding

Encoding — это схема кодирования/декодирования с основанием 32, определяемая 32-символьным алфавитом. Наиболее распространённое — это кодирование «base32», введённое для SASL GSSAPI и стандартизованное в RFC 4648. Альтернативное кодирование «base32hex» используется в DNSSEC.

type Encoding struct {
    // contains filtered or unexported fields
}

func NewEncoding

func NewEncoding(encoder string) *Encoding

NewEncoding возвращает новый заполненный Encoding, определенный заданным алфавитом, который должен быть строкой из 32 байт, содержащей уникальные байты и не содержащей символа заполнения или CR / LF ('\r', '\n'). Алфавит обрабатывается как последовательность байтовых значений без какой-либо специальной обработки для многобайтовых UTF-8. Результирующий Encoding использует символ заполнения по умолчанию ('='), который может быть изменён или отключён с помощью Encoding.WithPadding.

func (*Encoding) AppendDecode 1.22

func (enc *Encoding) AppendDecode(dst, src []byte) ([]byte, error)

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

func (*Encoding) AppendEncode 1.22

func (enc *Encoding) AppendEncode(dst, src []byte) []byte

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

func (*Encoding) Decode

func (enc *Encoding) Decode(dst, src []byte) (n int, err error)

Decode декодирует src, используя кодирование enc. Он записывает не более Encoding.DecodedLen(len(src)) байтов в dst и возвращает количество записанных байтов. Если src содержит недопустимые данные base32, он вернёт количество успешно записанных байтов и CorruptInputError. Символы перевода строки (\r и \n) игнорируются.

Пример

Код:

str := "JBSWY3DPFQQHO33SNRSCC==="
dst := make([]byte, base32.StdEncoding.DecodedLen(len(str)))
n, err := base32.StdEncoding.Decode(dst, []byte(str))
if err != nil {
    fmt.Println("decode error:", err)
    return
}
dst = dst[:n]
fmt.Printf("%q\n", dst)

Вывод:

"Hello, world!"

func (*Encoding) DecodeString

func (enc *Encoding) DecodeString(s string) ([]byte, error)

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

Пример

Код:

str := "ONXW2ZJAMRQXIYJAO5UXI2BAAAQGC3TEEDX3XPY="
data, err := base32.StdEncoding.DecodeString(str)
if err != nil {
    fmt.Println("error:", err)
    return
}
fmt.Printf("%q\n", data)

Вывод:

"some data with \x00 and \ufeff"

func (*Encoding) DecodedLen

func (enc *Encoding) DecodedLen(n int) int

DecodedLen возвращает максимальную длину в байтах декодированных данных, соответствующих n байтам данных, закодированных в base32.

func (*Encoding) Encode

func (enc *Encoding) Encode(dst, src []byte)

Encode кодирует src, используя кодирование enc, записывая Encoding.EncodedLen(len(src)) байтов в dst.

Кодирование заполняет вывод кратным 8 байтам, поэтому Encode не подходит для использования на отдельных блоках большого потока данных. Используйте NewEncoder вместо этого.

Пример

Код:

data := []byte("Hello, world!")
dst := make([]byte, base32.StdEncoding.EncodedLen(len(data)))
base32.StdEncoding.Encode(dst, data)
fmt.Println(string(dst))

Вывод:

JBSWY3DPFQQHO33SNRSCC===

func (*Encoding) EncodeToString

func (enc *Encoding) EncodeToString(src []byte) string

EncodeToString возвращает кодирование base32 src.

Пример

Код:

data := []byte("any + old & data")
str := base32.StdEncoding.EncodeToString(data)
fmt.Println(str)

Вывод:

MFXHSIBLEBXWYZBAEYQGIYLUME======

func (*Encoding) EncodedLen

func (enc *Encoding) EncodedLen(n int) int

EncodedLen возвращает длину в байтах кодирования base32 входного буфера длиной n.

func (Encoding) WithPadding 1.9

func (enc Encoding) WithPadding(padding rune) *Encoding

WithPadding создаёт новое кодирование, идентичное enc, но со специфицированным символом заполнения или NoPadding для отключения заполнения. Символ заполнения не должен быть '\r' или '\n', не должен содержаться в алфавите кодирования, не должен быть отрицательным и должен быть rune, равным или меньше '\xff'. Символы заполнения выше '\x7f' кодируются как их точное байтовое значение, а не с использованием UTF-8 представления codepoint.

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

Spec-Zone.ru

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