package base32
import "encoding/base32"
base32包实现了RFC 4648规定的base32编码。
Index
- Variables
- type CorruptInputError
- func (e CorruptInputError) Error() string
- type Encoding
- func NewEncoding(encoder string) *Encoding
- func (enc *Encoding) DecodedLen(n int) int
- func (enc *Encoding) Decode(dst, src []byte) (n int, err error)
- func (enc *Encoding) DecodeString(s string) ([]byte, error)
- func (enc *Encoding) EncodedLen(n int) int
- func (enc *Encoding) Encode(dst, src []byte)
- func (enc *Encoding) EncodeToString(src []byte) string
- func NewDecoder(enc *Encoding, r io.Reader) io.Reader
- func NewEncoder(enc *Encoding, w io.Writer) io.WriteCloser
Examples
Variables
var HexEncoding = NewEncoding(encodeHex)
RFC 4648定义的“扩展Hex字符集”,用于DNS。
var StdEncoding = NewEncoding(encodeStd)
RFC 4648定义的标准base32编码字符集。
type CorruptInputError
type CorruptInputError int64
func (CorruptInputError) Error
func (e CorruptInputError) Error() string
type Encoding
type Encoding struct {
// 内含隐藏或非导出字段
}
双向的编码/解码协议,根据一个32字符的字符集定义,RFC 4648标准化了两种字符集。默认字符集用于SASI和GSSAPI,另一种用于DNSSEC。
func NewEncoding
func NewEncoding(encoder string) *Encoding
使用给出的字符集生成一个*Encoding,字符集必须是32字节的字符串。
func (*Encoding) DecodedLen
func (enc *Encoding) DecodedLen(n int) int
返回n字节base32编码的数据解码后的最大长度。
func (*Encoding) Decode
func (enc *Encoding) Decode(dst, src []byte) (n int, err error)
将src的数据解码后存入dst,最多写DecodedLen(len(src))字节数据到dst,并返回写入的字节数。如果src包含非法字符,将返回成功写入的字符数和CorruptInputError。换行符(\r、\n)会被忽略。
func (*Encoding) DecodeString
func (enc *Encoding) DecodeString(s string) ([]byte, error)
返回base32编码的字符串s代表的数据。
Example
str := "ONXW2ZJAMRQXIYJAO5UXI2BAAAQGC3TEEDX3XPY="
data, err := base32.StdEncoding.DecodeString(str)
if err != nil {
fmt.Println("error:", err)
return
}
fmt.Printf("%q\n", data)
Output:
"some data with \x00 and \ufeff"
func (*Encoding) EncodedLen
func (enc *Encoding) EncodedLen(n int) int
返回n字节数据进行base32编码后的最大长度。
func (*Encoding) Encode
func (enc *Encoding) Encode(dst, src []byte)
将src的数据编码后存入dst,最多写EncodedLen(len(src))字节数据到dst,并返回写入的字节数。
函数会把输出设置为8的倍数,因此不建议对大数据流的独立数据块执行此方法,使用NewEncoder()代替。
func (*Encoding) EncodeToString
func (enc *Encoding) EncodeToString(src []byte) string
返回将src编码后的字符串。
Example
data := []byte("any + old & data")
str := base32.StdEncoding.EncodeToString(data)
fmt.Println(str)
Output:
MFXHSIBLEBXWYZBAEYQGIYLUME======
func NewDecoder
func NewDecoder(enc *Encoding, r io.Reader) io.Reader
创建一个新的base32流解码器。
func NewEncoder
func NewEncoder(enc *Encoding, w io.Writer) io.WriteCloser
创建一个新的base32流编码器。写入的数据会在编码后再写入w,base32编码每5字节执行一次编码操作;写入完毕后,使用者必须调用Close方法以便将未写入的数据从缓存中刷新到w中。
Example
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()
Output:
MZXW6ADCMFZA====