encoding/base64

Package base64

  • import "encoding/base64"

  • 概述

  • 索引

  • 示例

概述

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

示例

package main import ( "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)) }

索引

  • 常量

  • 变量

  • 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 = '=' // 标准填充字符 NoPadding rune = -1 // 没有填充 )

变量

RawStdEncoding 是 RFC 4648 第3.2节中定义的标准原始未加标签的base64编码。这与StdEncoding相同,但省略了填充字符。

var RawStdEncoding = StdEncoding.WithPadding(NoPadding)

RawURLEncoding 是在 RFC 4648 中定义的无衬垫的备用 base64 编码。它通常用于 URL 和文件名。这与 URLEncoding 相同,但省略了填充字符。

var RawURLEncoding = URLEncoding.WithPadding(NoPadding)

StdEncoding 是 RFC 4648 中定义的标准 base64 编码。

var StdEncoding = NewEncoding(encodeStd)

URLEncoding 是 RFC 4648 中定义的备用 base64 编码。它通常用于 URL 和文件名。

var URLEncoding = NewEncoding(encodeURL)

func NewDecoder(查看源代码)

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

NewDecoder 构造一个新的 base64 流解码器。

func NewEncoder(查看源代码)

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

NewEncoder 返回一个新的 base64 流编码器。写入返回的作者的数据将使用 enc 进行编码,然后写入w。Base64 编码以 4 字节块运行; 写完后,调用者必须关闭返回的编码器以刷新任何部分写入的块。

示例

package main import ( "encoding/base64" "os" ) func main() { input := []byte("foo\x00bar") encoder := base64.NewEncoder(base64.StdEncoding, os.Stdout) encoder.Write(input) // 完成后必须关闭编码器以刷新任何部分块。 // 如果您注释掉以下行,则最后一个部分块“r” // 不会被编码。 encoder.Close() }

type CorruptInputError(查看源代码)

type CorruptInputError int64

func (CorruptInputError) Error(查看源代码)

func (e CorruptInputError) Error() string

type Encoding(查看源代码)

编码是基数为64 的 encoding/decoding 方案,由 64 个字符的字母表定义。最常见的编码是 RFC 4648 中定义的“base64”编码,用于MIME (RFC 2045) 和 PEM(RFC 1421)。RFC 4648 还定义了一种替代编码,这是使用 - 和_代替+和/的标准编码。

type Encoding struct { // 包含已过滤或未导出的字段 }

func NewEncoding(查看源代码)

func NewEncoding(encoder string) *Encoding

NewEncoding 返回由给定字母表定义的新填充编码,该编码必须是不包含填充字符或CR / LF('\ r','\ n')的64字节字符串。生成的编码使用默认填充字符('='),可以通过 WithPadding 更改或禁用该字符。

func (*Encoding) Decode(查看源代码)

func (enc *Encoding) Decode(dst, src []byte) (n int, err error)

解码使用 enc 编码解码 src。它至多将 DecodedLen(len(src)) 字节写入dst并返回写入的字节数。如果 src 包含无效的 base64 数据,它将返回成功写入的字节数和 CorruptInputError。换行符(\r 和 \n)被忽略。

func (*Encoding) DecodeString(查看源代码)

func (enc *Encoding) DecodeString(s string) ([]byte, error)

DecodeString 返回由 base64 字符串 s 表示的字节。

示例

package main import ( "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 (*Encoding) DecodedLen(查看源代码)

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

DecodedLen 返回对应于 n 个字节的 base64 编码数据的解码数据的最大字节长度。

func (*Encoding) Encode(查看源代码)

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

使用编码 enc 对编码 src 进行编码,将 EncodedLen 字节写入 dst。

编码将输出填充到4个字节的倍数,因此 Encode 不适用于大数据流的各个块。改用 NewEncoder()。

func (*Encoding) EncodeToString(查看源代码)

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

EncodeToString 返回 src 的 base64 编码。

示例

package main import ( "encoding/base64" "fmt" ) func main() { data := []byte("any + old & data") str := base64.StdEncoding.EncodeToString(data) fmt.Println(str) }

func (*Encoding) EncodedLen(查看源代码)

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

EncodedLen 返回长度为 n 的输入缓冲区的 base64 编码的字节长度。

func (Encoding) Strict(查看源代码)

func (enc Encoding) Strict() *Encoding

除严格解码启用之外,严格创建与 enc 相同的新编码。在这种模式下,解码器要求尾部填充位为零,如 RFC 4648 第 3.5 节所述。

func (Encoding) WithPadding(查看源代码)

func (enc Encoding) WithPadding(padding rune) *Encoding

WithPadding 创建一个与 enc 相同的新编码,除了指定的填充字符或 NoPadding 禁用填充。填充字符不能是 '\r' 或 '\n',不能包含在编码的字母表中,并且必须是等于或低于 '\xff' 的符文。