©
This document uses PHP Chinese website manual Release
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(enc *Encoding, r io.Reader) io.Reader
NewDecoder 构造一个新的 base32 流解码器。
func NewEncoder(enc *Encoding, w io.Writer) io.WriteCloser
NewEncoder返回一个新的base32流编码器。写入返回的作者的数据将使用enc进行编码,然后写入w。Base32编码以5字节块运行; 写完后,调用者必须关闭返回的编码器以刷新任何部分写入的块。
package mainimport ("encoding/base32""os")func main() { 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()}
type CorruptInputError int64
func (e CorruptInputError) Error() string
编码是基数为32的编码/解码方案,由32个字母的字母表定义。最常见的是为SASL GSSAPI引入的“base32”编码,并在RFC 4648中进行了标准化。在DNSSEC中使用了备用“base32hex”编码。
type Encoding struct { // contains filtered or unexported fields}
func NewEncoding(encoder string) *Encoding
NewEncoding返回一个由给定字母表定义的新编码,它必须是一个32字节的字符串。
func (enc *Encoding) Decode(dst, src []byte) (n int, err error)
解码使用enc编码解码src。它至多将DecodedLen(len(src)) 字节写入dst并返回写入的字节数。如果src包含无效的base32数据,它将返回成功写入的字节数和CorruptInputError。换行符(\r 和\n)被忽略。
func (enc *Encoding) DecodeString(s string) ([]byte, error)
DecodeString返回由base32字符串s表示的字节。
package mainimport ("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 (enc *Encoding) DecodedLen(n int) int
DecodedLen返回对应于base32编码数据的n个字节的解码数据的最大字节长度。
func (enc *Encoding) Encode(dst, src []byte)
使用编码enc对编码src进行编码,将EncodedLen(len(src))字节写入dst。
编码将输出填充到8个字节的倍数,因此Encode不适用于大数据流的各个块。改用NewEncoder()。
func (enc *Encoding) EncodeToString(src []byte) string
EncodeToString返回src的base32编码。
package mainimport ("encoding/base32""fmt")func main() { data := []byte("any + old & data") str := base32.StdEncoding.EncodeToString(data) fmt.Println(str)}
func (enc *Encoding) EncodedLen(n int) int
EncodedLen返回长度为n的输入缓冲区的base32编码的字节长度。
func (enc Encoding) WithPadding(padding rune) *Encoding
WithPadding创建一个与enc相同的新编码,除了指定的填充字符或NoPadding禁用填充。填充字符不能是'\r'或'\n',不能包含在编码的字母表中,并且必须是等于或低于'\ xff'的符文。