📌  相关文章
📜  base64 编码 golang - Go 编程语言 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 14:59:28.054000             🧑  作者: Mango

Base64 编码 in Golang

Base64编码是一种将二进制数据转换成ASCII字符的编码方式。这种编码方式广泛应用于各种场景,如加密、签名、提交图片等等。在Golang中也提供了对Base64编码的支持。

base64 package in Golang

Golang标准库提供了 base64 package,用于对二进制数据进行Base64编码。其中,base64 package中最常用的两个函数是 Encode 和 Decode 函数。

Encode

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

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 Base64编码,以便符合URL安全字符集的要求。Golang中也提供了对URL Base64的支持。同样,base64 package 提供了两个函数,分别是 URLsafeEncode 和 URLsafeDecode。

URLsafeEncode

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

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编码的支持。