Go Base64编码

Go提供了对base64编码和解码的内置支持

  1. package main
  2. // 这种导入包的语法将默认的base64起了一个别名b64,这样
  3. // 我们在下面就可以直接使用b64表示这个包,省点输入量
  4. import b64 "encoding/base64"
  5. import "fmt"
  6. func main() {
  7. // 这里是我们用来演示编码和解码的字符串
  8. data := "abc123!?$*&()'-=@~"
  9. // Go支持标准的和兼容URL的base64编码。
  10. // 我们这里使用标准的base64编码,这个
  11. // 函数需要一个`[]byte`参数,所以将这
  12. // 个字符串转换为字节数组
  13. sEnc := b64.StdEncoding.EncodeToString([]byte(data))
  14. fmt.Println(sEnc)
  15. // 解码一个base64编码可能返回一个错误,
  16. // 如果你不知道输入是否是正确的base64
  17. // 编码,你需要检测一些解码错误
  18. sDec, _ := b64.StdEncoding.DecodeString(sEnc)
  19. fmt.Println(string(sDec))
  20. fmt.Println()
  21. // 使用兼容URL的base64编码和解码
  22. uEnc := b64.URLEncoding.EncodeToString([]byte(data))
  23. fmt.Println(uEnc)
  24. uDec, _ := b64.URLEncoding.DecodeString(uEnc)
  25. fmt.Println(string(uDec))
  26. }

运行结果

  1. YWJjMTIzIT8kKiYoKSctPUB+
  2. abc123!?$*&()'-=@~
  3. YWJjMTIzIT8kKiYoKSctPUB-
  4. abc123!?$*&()'-=@~

这两种方法都将原数据编码为base64编码,区别在于标准的编码后面是+,而兼容URL的编码方式后面是-