注册 登录

清河洛

Go中base64和hex的编码解码

qingheluo2024-07-19清河洛357
base64Go官方库中encoding/base64包实现了base64的相关编码解码操作常量 var StdPadding = '=' var NoPadding = -1 var StdEncoding = NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/") RFC4648定义的标准base64编码字符集,使用"="末尾填充 RawStdEncoding :不使用末尾填充 相当于StdEncoding.WithPadding(NoPadding) var...

base64

Go官方库中encoding/base64包实现了base64的相关编码解码操作

常量

var StdPadding = '='
var NoPadding = -1

var StdEncoding = NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")
    RFC4648定义的标准base64编码字符集,使用"="末尾填充
RawStdEncoding  :不使用末尾填充
    相当于StdEncoding.WithPadding(NoPadding)

var URLEncoding = NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_")
    RFC4648定义的另一base64编码字符集,用于URL和文件名,使用"="末尾填充
    就是修改了最后两个在url或文件名中有特殊意义的字符
RawURLEncoding  :不使用末尾填充
    相当于URLEncoding.WithPadding(NoPadding)

type Encoding struct {}

根据一个64字符的字符集定义的双向编码/解码协议

NewEncoding(encoder string) Encoding:使用指定的64字节字符集生成一个Encoding,默认使用"="末尾填充

AppendEncode(dst, src []byte) []byte  :将src数据进行base64编码后附加到dst,返回src的base64编码
AppendDecode(dst, src []byte) ([]byte, error)  :将base64编码的src解码后附加到dst
    返回src解码后的数据
    如果输入格式不正确,返回src的部分解码数据和一个错误

EncodedLen(n int) int :返回n字节数据进行base64编码后的最大长度
Encode(dst, src []byte) :将src的数据进行base64编码后存入dst
    最多写如EncodedLen(len(src))字节数据到dst,并返回写入的字节数
EncodeToString(src []byte) string :返回将src编码后的字符串

DecodedLen(n int) int :返回n字节base64编码的数据解码后的最大长度
Decode(dst, src []byte) (n int, err error)  :将src的base64编码数据解码后存入dst
    最多写入DecodedLen(len(src))字节数据到dst,并返回写入的字节数
    如果src包含非法字符,将返回成功写入的字符数和CorruptInputError
    换行符(\r、\n)会被忽略
DecodeString(s string) ([]byte, error)  :返回base64编码的字符串s解码后的数据


WithPadding(padding rune) *Encoding  :创建一个指定末尾填充的新编码
    base64包提供了两个常量作为padding的值,StdPadding表示"="(默认值),NoPadding表示禁用末尾填充
    填充字符不能是'\r'或'\n',不能包含在编码的字母表中,不能是负数
    必须是等于或小于'\xff'的字符

Strict() *Encoding  :创建一个"0"末尾填充的新编码

NewEncoder(enc *Encoding, w io.Writer) io.WriteCloser :创建一个新的base64流编码器

写入的数据会在进行base64编码后再写入w
写入完毕后,使用者必须调用Close方法以便将未写入的数据从缓存中刷新到w中

NewDecoder(enc *Encoding, r io.Reader) io.Reader :创建一个新的base64流解码器

hex

Go官方库中encoding/hex包实现了16进制字符表示的编解码

AppendEncode(dst, src []byte) []byte :将src进行十六进制编码并附加到dst,返回src编码的数据

AppendDecode(dst, src []byte) ([]byte, error) :将十六进制的src解码后附加到dst

返回src解码的数据
如果输入格式不正确,返回src的部分解码的和一个错误

EncodedLen(n int) int :长度x的数据进行十六进制编码后的长度

Encode(dst, src []byte) int :将src的数据编码为十六进制并写入dst,返回实际写入dst的字节数

EncodeToString(src []byte) string :将数据src编码为十六进制字符串

DecodedLen(x int) int :长度x的编码数据解码后的明文数据的长度

Decode(dst, src []byte) (int, error) :将十六进制的src解码并写入dst

返回实际写入dst的字节数
期望src仅包含十六进制字符,并且长度为偶数
如果输入的格式不正确,将返回错误发生前解码的字节数

DecodeString(s string) ([]byte, error) :返回十六进制的字符串s代表的数据

NewDecoder(r io.Reader) io.Reader :创建一个从r中读取十六进制数据并解码的解码器

NewEncoder(w io.Writer) io.Writer :创建一个将数据进行十六进制编码后写入w的编码器



网址导航