?
This document uses PHP Chinese website manual Release
import "encoding/base64"
Overview
Index
Examples
包base64實現(xiàn)了RFC 4648規(guī)定的base64編碼。
package mainimport ("encoding/base64""fmt")func main() { msg := "Hello, 世界" encoded := base64.StdEncoding.EncodeToString([]byte(msg)) fmt.Println(encoded) decoded, err := base64.StdEncoding.DecodeString(encoded)if err != nil { fmt.Println("decode error:", err)return} fmt.Println(string(decoded))}
Constants
Variables
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) Strict() *Encoding
func (enc Encoding) WithPadding(padding rune) *Encoding
Package Encoding.DecodeString Encoding.EncodeToString NewEncoder
base64.go
const ( StdPadding rune = '=' // Standard padding character NoPadding rune = -1 // No padding)
RawStdEncoding是RFC 4648第3.2節(jié)中定義的標(biāo)準(zhǔn)原始未加標(biāo)簽的base64編碼。這與StdEncoding相同,但省略了填充字符。
var RawStdEncoding = StdEncoding.WithPadding(NoPadding)
RawURLEncoding是在RFC 4648中定義的無襯墊的備用base64編碼。它通常用于URL和文件名。這與URLEncoding相同,但省略了填充字符。
var RawURLEncoding = URLEncoding.WithPadding(NoPadding)
StdEncoding是RFC 4648中定義的標(biāo)準(zhǔn)base64編碼。
var StdEncoding = NewEncoding(encodeStd)
URLEncoding是RFC 4648中定義的備用base64編碼。它通常用于URL和文件名。
var URLEncoding = NewEncoding(encodeURL)
func NewDecoder(enc *Encoding, r io.Reader) io.Reader
NewDecoder構(gòu)造一個新的base64流解碼器。
func NewEncoder(enc *Encoding, w io.Writer) io.WriteCloser
NewEncoder返回一個新的base64流編碼器。寫入返回的作者的數(shù)據(jù)將使用enc進(jìn)行編碼,然后寫入w。Base64編碼以4字節(jié)塊運(yùn)行; 寫完后,調(diào)用者必須關(guān)閉返回的編碼器以刷新任何部分寫入的塊。
package mainimport ("encoding/base64""os")func main() { input := []byte("foo\x00bar") encoder := base64.NewEncoder(base64.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ù)為64的編碼/解碼方案,由64個字符的字母表定義。最常見的編碼是RFC 4648中定義的“base64”編碼,用于MIME (RFC 2045)和PEM(RFC 1421)。RFC 4648還定義了一種替代編碼,這是使用 - 和_代替+和/的標(biāo)準(zhǔn)編碼。
type Encoding struct { // contains filtered or unexported fields}
func NewEncoding(encoder string) *Encoding
NewEncoding返回由給定字母表定義的新填充編碼,該編碼必須是不包含填充字符或CR / LF('\ r','\ n')的64字節(jié)字符串。生成的編碼使用默認(rèn)填充字符('='),可以通過WithPadding更改或禁用該字符。
func (enc *Encoding) Decode(dst, src []byte) (n int, err error)
解碼使用enc編碼解碼src。它至多將DecodedLen(len(src))字節(jié)寫入dst并返回寫入的字節(jié)數(shù)。如果src包含無效的base64數(shù)據(jù),它將返回成功寫入的字節(jié)數(shù)和CorruptInputError。換行符(\ r和\ n)被忽略。
func (enc *Encoding) DecodeString(s string) ([]byte, error)
DecodeString返回由base64字符串s表示的字節(jié)。
package mainimport ("encoding/base64""fmt")func main() { str := "c29tZSBkYXRhIHdpdGggACBhbmQg77u/" data, err := base64.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)于n個字節(jié)的base64編碼數(shù)據(jù)的解碼數(shù)據(jù)的最大字節(jié)長度。
func (enc *Encoding) Encode(dst, src []byte)
使用編碼enc對編碼src進(jìn)行編碼,將EncodedLen字節(jié)寫入dst。
編碼將輸出填充到4個字節(jié)的倍數(shù),因此Encode不適用于大數(shù)據(jù)流的各個塊。改用NewEncoder()。
func (enc *Encoding) EncodeToString(src []byte) string
EncodeToString返回src的base64編碼。
package mainimport ("encoding/base64""fmt")func main() { data := []byte("any + old & data") str := base64.StdEncoding.EncodeToString(data) fmt.Println(str)}
func (enc *Encoding) EncodedLen(n int) int
EncodedLen返回長度為n的輸入緩沖區(qū)的base64編碼的字節(jié)長度。
func (enc Encoding) Strict() *Encoding
除嚴(yán)格解碼啟用之外,嚴(yán)格創(chuàng)建與enc相同的新編碼。在這種模式下,解碼器要求尾部填充位為零,如RFC 4648第3.5節(jié)所述。
func (enc Encoding) WithPadding(padding rune) *Encoding
WithPadding創(chuàng)建一個與enc相同的新編碼,除了指定的填充字符或NoPadding禁用填充。填充字符不能是'\r'或'\n',不能包含在編碼的字母表中,并且必須是等于或低于'\xff'的符文。