首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

encoding/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

包文件

常量

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

编码是基数为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' 的符文。

扫码关注腾讯云开发者

领取腾讯云代金券