📅  最后修改于: 2023-12-03 15:30:59.619000             🧑  作者: Mango
Base64 是一种编码方式,它能够将二进制数据转换成可打印的字符集编码,通常用于在HTTP环境下传输字节数组。Go语言中通过 encoding/base64
包提供了Base64编码和解码的函数。
要对二进制数据进行Base64编码,可以使用 encoding/base64
包中的 EncodeToString()
函数。该函数的参数是一个字节数组,返回值是该字节数组的Base64编码字符串。
package main
import (
"encoding/base64"
"fmt"
)
func main() {
data := []byte("hello world")
str := base64.StdEncoding.EncodeToString(data)
fmt.Println(str)
}
输出结果:
aGVsbG8gd29ybGQ=
要对Base64编码的字符串进行解码,可以使用 encoding/base64
包中的 DecodeString()
函数。该函数的参数是一个Base64编码的字符串,返回值是解码后的字节数组。
package main
import (
"encoding/base64"
"fmt"
)
func main() {
str := "aGVsbG8gd29ybGQ="
data, err := base64.StdEncoding.DecodeString(str)
if err != nil {
fmt.Println("error:", err)
return
}
fmt.Println(string(data))
}
输出结果:
hello world
在使用 encoding/base64
包提供的函数进行Base64编码时,会依据Base64标准对数据进行编码,如果需要使用自定义字符集进行编码可以使用 NewEncoding()
函数,该函数返回一个自定义编码结构体,结构体中包含了自定义字符集的编码和解码方法。
package main
import (
"encoding/base64"
"fmt"
)
func main() {
data := []byte("hello world")
encode := base64.NewEncoding("ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba9876543210+/")
str := encode.EncodeToString(data)
fmt.Println(str)
decode, err := base64.NewEncoding("ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba9876543210+/").DecodeString(str)
if err != nil {
fmt.Println("error:", err)
return
}
fmt.Println(string(decode))
}
输出结果:
vGKdP7fZaqWblwLg==
hello world
Go语言提供了 encoding/base64
包,用于实现Base64编码和解码。通过使用该包提供的函数,可以方便地对二进制数据进行编码和解码操作。另外,该包还支持自定义编码字符集,可以根据实际需求进行自定义。