Go 语言

Go 语言教程 Go 语言环境安装 Go 语言结构 Go 语言基础语法 Go 语言数据类型 Go 语言变量 Go 语言常量 Go 语言运算符 Go 语言条件语句 Go 语言 if 语句 Go 语言 if...else 语句 Go 语言 if 语句嵌套 Go 语言 switch 语句 Go 语言 select 语句 Go 语言循环语句 Go 语言 for 循环 Go 语言循环嵌套 Go 语言 break 语句 Go 语言 continue 语句 Go 语言 goto 语句 Go 语言函数 Go 语言函数值传递值 Go 语言函数引用传递值 Go 语言函数作为值 Go 语言函数闭包 Go 语言函数方法 Go 语言变量作用域 Go 语言数组 Go 语言多维数组 Go 语言向函数传递数组 Go 语言指针 Go 语言指针数组 Go 语言指向指针的指针 Go 语言指针作为函数参数 Go 语言结构体 Go 语言切片(Slice) Go 语言范围(Range) Go 语言Map(集合) Go 语言递归函数 Go 语言类型转换 Go 语言接口 Go 错误处理 Go 语言开发工具Go 语言标准库

Go 语言标准库


package base64

import "encoding/base64"

base64实现了RFC 4648规定的base64编码。

Go语言标准库 >>


  • Variables
  • type CorruptInputError
  • type Encoding
  • func NewDecoder(enc *Encoding, r io.Reader) io.Reader
  • func NewEncoder(enc *Encoding, w io.Writer) io.WriteCloser
  • Examples

    Go语言标准库 >>


  • Encoding.DecodeString
  • Encoding.EncodeToString
  • NewEncoder
  • Variables

    var StdEncoding = NewEncoding(encodeStd)

    RFC 4648定义的标准base64编码字符集。

    var URLEncoding = NewEncoding(encodeURL)

    RFC 4648定义的另一base64编码字符集,用于URL和文件名。

    type CorruptInputError

    type CorruptInputError int64

    func (CorruptInputError) Error

    func (e CorruptInputError) Error() string

    type Encoding

    type Encoding struct {
        // 内含隐藏或非导出字段
    }

    双向的编码/解码协议,根据一个64字符的字符集定义,RFC 4648标准化了两种字符集。默认字符集用于MIME(RFC 2045)和PEM(RFC 1421)编码;另一种用于URL和文件名,用'-'和'_'替换了'+'和'/'。

    func NewEncoding

    func NewEncoding(encoder string) *Encoding

    使用给出的字符集生成一个*Encoding,字符集必须是64字节的字符串。

    func (*Encoding) DecodedLen

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

    返回n字节base64编码的数据解码后的最大长度。

    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)

    返回base64编码的字符串s代表的数据。

    Example
    str := "c29tZSBkYXRhIHdpdGggACBhbmQg77u/"
    data, err := base64.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字节数据进行base64编码后的最大长度。

    func (*Encoding) Encode

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

    将src的数据编码后存入dst,最多写EncodedLen(len(src))字节数据到dst,并返回写入的字节数。

     函数会把输出设置为4的倍数,因此不建议对大数据流的独立数据块执行此方法,使用NewEncoder()代替。

    func (*Encoding) EncodeToString

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

    返回将src编码后的字符串。

    Example
    data := []byte("any + old & data")
    str := base64.StdEncoding.EncodeToString(data)
    fmt.Println(str)

    Output:

    YW55ICsgb2xkICYgZGF0YQ==
    

    func NewDecoder

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

    创建一个新的base64流解码器。

    func NewEncoder

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

    创建一个新的base64流编码器。写入的数据会在编码后再写入w,base32编码每3字节执行一次编码操作;写入完毕后,使用者必须调用Close方法以便将未写入的数据从缓存中刷新到w中。

    Example
    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()

    Output:

    Zm9vAGJhcg==