如何使用Golang encoding/base64进行Base64编码_编码和解码示例

1次阅读

go语言encoding/base64包提供标准与URL安全Base64编解码:EncodeToString将[]byte转Base64字符串,DecodeString反向解析并需检查错误;URLEncoding用-/_替代+/且默认无填充;二进制数据推荐流式处理。

如何使用Golang encoding/base64进行Base64编码_编码和解码示例

Go语言标准库中的encoding/base64包提供了高效、安全的Base64编码与解码能力,无需第三方依赖,适用于http传输、密码学辅助、数据序列化等常见场景。

基础编码:字符串转Base64

使用base64.StdEncoding.EncodeToString()可将字节切片(如字符串转[]byte)快速编码为标准Base64字符串。注意:输入是[]byte,不是原始字符串;编码结果不含换行符,符合RFC 4648标准。

示例:

package main  import (     "encoding/base64"     "fmt" )  func main() {     data := "Hello, 世界"     encoded := base64.StdEncoding.EncodeToString([]byte(data))     fmt.Println(encoded) // SGVsbG8sios4lueVjA== }

基础解码:Base64字符串还原为原始数据

base64.StdEncoding.DecodeString()解码。该函数返回[]byte和错误;若输入非法(如长度非4倍数、含非法字符),会返回err != nil,务必检查错误。

立即学习go语言免费学习笔记(深入)”;

如何使用Golang encoding/base64进行Base64编码_编码和解码示例

Android高手进阶教程之 Android Widget开发案例

Android高手进阶教程(八)之—-Android Widget开发案例(世界杯倒计时!),主要向大家讲解使用Android Widget如何编写出一款世界杯风格的倒计时程序,教程说出了制作步骤和代码。

如何使用Golang encoding/base64进行Base64编码_编码和解码示例 2

查看详情 如何使用Golang encoding/base64进行Base64编码_编码和解码示例

  • 解码前建议先用base64.StdEncoding.WithPadding(base64.NoPadding)处理无填充的输入(如URL安全变体)
  • 若不确定是否含填充,可用base64.RawStdEncoding(忽略填充)或预处理补足=

示例:

decoded, err := base64.StdEncoding.DecodeString("SGVsbG8sIOS4lueVjA==") if err != nil {     panic(err) } fmt.Println(string(decoded)) // Hello, 世界

处理二进制数据(如图片、文件)

Base64常用于嵌入二进制资源(如PNG图标、JWT载荷)。此时直接操作[]byte更自然——读取文件后编码,或解码后写入文件。

  • 编码:读取os.Fileio.ReadAllEncodeToString
  • 解码:DecodeString → 写入新文件(注意设置正确权限,如0644
  • 大文件建议用Encoder/Decoder流式处理,避免内存暴涨

URL安全变体(base64.URLEncoding)

标准Base64含+/,不适用于URL或文件名。Go提供base64.URLEncoding,用-_替代,并默认无填充。

  • 编码:base64.URLEncoding.EncodeToString([]byte("Token"))dG9rZW4=(实际输出无=
  • 解码:base64.URLEncoding.DecodeString("dG9rZW4") 支持无填充输入
  • 若需兼容旧系统(要求填充),可显式调用.WithPadding(base64.StdPadding)

不复杂但容易忽略:始终校验解码错误,区分标准与URL变体,二进制数据优先走字节流而非字符串中间转换。

text=ZqhQzanResources