首页
学习
活动
专区
工具
TVP
发布

encoding/base32

  • import "encoding/base32"
  • 概述
  • 索引
  • 示例

概述

包 base32 按照 RFC 4648 的规定实现 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

包文件

常量

const (
        StdPadding rune = '=' // 标准填充字符
        NoPadding  rune = -1  // 无填充
)

变量

HexEncoding 是 RFC 4648 中定义的“扩展的十六进制字母”。它通常用于 DNS。

var HexEncoding = NewEncoding(encodeHex)

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

var StdEncoding = NewEncoding(encodeStd)

func NewDecoder(查看源代码)

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

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

func NewEncoder(查看源代码)

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

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

示例

package main

import (
	"encoding/base32"
	"os"
)

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

type CorruptInputError(查看源代码)

type CorruptInputError int64

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

func (e CorruptInputError) Error() string

编码是基数为 32 的 encoding/decoding 方案,由 32 个字母的字母表定义。最常见的是为 SASL GSSAPI 引入的“base32”编码,并在 RFC 4648 中进行了标准化。在 DNSSEC 中使用了备用“base32hex”编码。

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

func NewEncoding(查看源代码)

func NewEncoding(encoder string) *Encoding

NewEncoding 返回一个由给定字母表定义的新编码,它必须是一个 32 字节的字符串。

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

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

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

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

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

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

示例

package main

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

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

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

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

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

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

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

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

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

EncodeToString 返回 src 的 base32 编码。

示例

package main

import (
	"encoding/base32"
	"fmt"
)

func main() {
	data := []byte("any + old & data")
	str := base32.StdEncoding.EncodeToString(data)
	fmt.Println(str)
}

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

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

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

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

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

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

扫码关注腾讯云开发者

领取腾讯云代金券