encoding/base32
Package 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
type Encoding(查看源代码)
编码是基数为 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' 的符文。