encoding/base32

Package base32

  • import "encoding/base32"

  • 概述

  • 索引

  • 示例

概述

包 base32 按照 RFC 4648 的规定实现 base32 编码。

概述

  • 常量

  • 变量

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

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

  • type CorruptInputError

  • func (e CorruptInputError) Error() string

  • type Encoding

  • func NewEncoding(encoder string) *Encoding

  • 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.DecodeString Encoding.EncodeToString NewEncoder

包文件

base32.go

常量

const ( StdPadding rune = '=' // 标准填充字符 NoPadding rune = -1 // 无填充 )

变量

HexEncoding 是 RFC 4648 中定义的“扩展的十六进制字母”。它通常用于 DNS。

var HexEncoding = NewEncoding(encodeHex)

StdEncoding 是 RFC 4648 中定义的标准 base32 编码。

var StdEncoding = NewEncoding(encodeStd)

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 流编码器。写入返回的作者的数据将使用 enc 进行编码,然后写入w。Base32 编码以5字节块运行;写完后,调用者必须关闭返回的编码器以刷新任何部分写入的块。

示例

package main import ( "encoding/base32" "os" ) func main() { input := []byte("foo\x00bar") encoder := base32.NewEncoder(base32.StdEncoding, os.Stdout) encoder.Write(input) // 完成后必须关闭编码器以冲洗任何部分块。 // 如果您注释掉以下行,则最后一个部分块“r” // 不会被编码。 encoder.Close() }

type CorruptInputError(查看源代码)

type CorruptInputError int64

func (CorruptInputError) Error(查看源代码)

func (e CorruptInputError) Error() string

type Encoding(查看源代码)

编码是基数为 32 的 encoding/decoding 方案,由 32 个字母的字母表定义。最常见的是为 SASL GSSAPI 引入的“base32”编码,并在 RFC 4648 中进行了标准化。在 DNSSEC 中使用了备用“base32hex”编码。

type Encoding struct { // 包含已过滤或未导出的字段 }

func NewEncoding(查看源代码)

func NewEncoding(encoder string) *Encoding

NewEncoding 返回一个由给定字母表定义的新编码,它必须是一个 32 字节的字符串。

func (*Encoding) Decode(查看源代码)

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

解码使用 enc 编码解码 src。它至多将 DecodedLen(len(src)) 字节写入 dst 并返回写入的字节数。如果 src 包含无效的 base32 数据,它将返回成功写入的字节数和 CorruptInputError。换行符(\r 和\n)被忽略。

func (*Encoding) DecodeString(查看源代码)

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

DecodeString 返回由 base32 字符串s表示的字节。

示例

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

func (*Encoding) DecodedLen(查看源代码)

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

DecodedLen 返回对应于 base32 编码数据的 n 个字节的解码数据的最大字节长度。

func (*Encoding) Encode(查看源代码)

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

使用编码 enc 对编码 src 进行编码,将EncodedLen(len(src)) 字节写入 dst。

编码将输出填充到 8 个字节的倍数,因此 Encode 不适用于大数据流的各个块。改用 NewEncoder()。

func (*Encoding) EncodeToString(查看源代码)

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

EncodeToString 返回 src 的 base32 编码。

示例

package main import ( "encoding/base32" "fmt" ) func main() { data := []byte("any + old & data") str := base32.StdEncoding.EncodeToString(data) fmt.Println(str) }

func (*Encoding) EncodedLen(查看源代码)

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

EncodedLen 返回长度为 n 的输入缓冲区的 base32 编码的字节长度。

func (Encoding) WithPadding(查看源代码)

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

WithPadding 创建一个与 enc 相同的新编码,除了指定的填充字符或 NoPadding 禁用填充。填充字符不能是 '\r' 或 '\n',不能包含在编码的字母表中,并且必须是等于或低于 '\xff' 的符文。