?
This document uses PHP Chinese website manual Release
import "encoding/base32"
概述
索引
示例
包 base32 按照 RFC 4648 的規(guī)定實現(xiàn) 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 構(gòu)造一個新的 base32 流解碼器。
func NewEncoder(enc *Encoding, w io.Writer) io.WriteCloser
NewEncoder返回一個新的base32流編碼器。寫入返回的作者的數(shù)據(jù)將使用enc進行編碼,然后寫入w。Base32編碼以5字節(jié)塊運行; 寫完后,調(diào)用者必須關(guān)閉返回的編碼器以刷新任何部分寫入的塊。
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
編碼是基數(shù)為32的編碼/解碼方案,由32個字母的字母表定義。最常見的是為SASL GSSAPI引入的“base32”編碼,并在RFC 4648中進行了標準化。在DNSSEC中使用了備用“base32hex”編碼。
type Encoding struct { // contains filtered or unexported fields}
func NewEncoding(encoder string) *Encoding
NewEncoding返回一個由給定字母表定義的新編碼,它必須是一個32字節(jié)的字符串。
func (enc *Encoding) Decode(dst, src []byte) (n int, err error)
解碼使用enc編碼解碼src。它至多將DecodedLen(len(src)) 字節(jié)寫入dst并返回寫入的字節(jié)數(shù)。如果src包含無效的base32數(shù)據(jù),它將返回成功寫入的字節(jié)數(shù)和CorruptInputError。換行符(\r 和\n)被忽略。
func (enc *Encoding) DecodeString(s string) ([]byte, error)
DecodeString返回由base32字符串s表示的字節(jié)。
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返回對應(yīng)于base32編碼數(shù)據(jù)的n個字節(jié)的解碼數(shù)據(jù)的最大字節(jié)長度。
func (enc *Encoding) Encode(dst, src []byte)
使用編碼enc對編碼src進行編碼,將EncodedLen(len(src))字節(jié)寫入dst。
編碼將輸出填充到8個字節(jié)的倍數(shù),因此Encode不適用于大數(shù)據(jù)流的各個塊。改用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的輸入緩沖區(qū)的base32編碼的字節(jié)長度。
func (enc Encoding) WithPadding(padding rune) *Encoding
WithPadding創(chuàng)建一個與enc相同的新編碼,除了指定的填充字符或NoPadding禁用填充。填充字符不能是'\r'或'\n',不能包含在編碼的字母表中,并且必須是等于或低于'\ xff'的符文。