📅  最后修改于: 2023-12-03 14:59:28.054000             🧑  作者: Mango
Base64编码是一种将二进制数据转换成ASCII字符的编码方式。这种编码方式广泛应用于各种场景,如加密、签名、提交图片等等。在Golang中也提供了对Base64编码的支持。
Golang标准库提供了 base64 package,用于对二进制数据进行Base64编码。其中,base64 package中最常用的两个函数是 Encode 和 Decode 函数。
Encode函数用于对二进制数据进行Base64编码,函数签名如下:
func Encode(dst, src []byte)
其中,dst为Base64编码后的结果,src为需要进行编码的二进制数据。
样例代码:
package main
import (
"encoding/base64"
"fmt"
)
func main() {
input := []byte("Hello World!")
encoded := make([]byte, base64.StdEncoding.EncodedLen(len(input)))
base64.StdEncoding.Encode(encoded, input)
fmt.Println(string(encoded))
}
运行结果为:
SGVsbG8gV29ybGQh
Decode函数用于对Base64编码后的数据进行解码,函数签名如下:
func Decode(dst, src []byte) (n int, err error)
其中,dst为解码后的数据,src为需要进行解码的Base64编码数据。
样例代码:
package main
import (
"encoding/base64"
"fmt"
)
func main() {
input := []byte("SGVsbG8gV29ybGQh")
decoded := make([]byte, base64.StdEncoding.DecodedLen(len(input)))
base64.StdEncoding.Decode(decoded, input)
fmt.Println(string(decoded))
}
运行结果为:
Hello World!
在URL中传输Base64编码时,需要进行URL Base64编码,以便符合URL安全字符集的要求。Golang中也提供了对URL Base64的支持。同样,base64 package 提供了两个函数,分别是 URLsafeEncode 和 URLsafeDecode。
URLsafeEncode函数用于对数据进行URL Base64编码,函数签名如下:
func (enc *Encoding) Encode(dest, src []byte)
其中,dest为URL Base64编码后的结果,src为需要进行编码的数据。
样例代码:
package main
import (
"encoding/base64"
"fmt"
)
func main() {
input := []byte("URL Base64编码")
encoded := make([]byte, base64.URLEncoding.EncodedLen(len(input)))
base64.URLEncoding.Encode(encoded, input)
fmt.Println(string(encoded))
}
运行结果为:
VUxSJTIwQmFzZTY0JTIw5Yiw5Y2Q
URLsafeDecode函数用于对URL Base64编码的数据进行解码,函数签名如下:
func (enc *Encoding) Decode(dest, src []byte) (n int, err error)
其中,dest为解码后的数据,src为需要进行解码的数据。
样例代码:
package main
import (
"encoding/base64"
"fmt"
)
func main() {
input := []byte("VUxSJTIwQmFzZTY0JTIw5Yiw5Y2Q")
decoded := make([]byte, base64.URLEncoding.DecodedLen(len(input)))
base64.URLEncoding.Decode(decoded, input)
fmt.Println(string(decoded))
}
运行结果为:
URL Base64编码
在Golang中使用Base64编码非常简单。要进行Base64编码,只需要调用Encode函数,要进行Base64解码,只需要调用Decode函数。不过需要注意的是,如果要在URL中传输Base64编码,则需要进行URL Base64编码,Golang中也提供了对URL Base64编码的支持。