登录
首页 >  Golang >  Go教程

Golangbase64编码解码教程示例

时间:2026-01-12 17:33:34 106浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《Golang base64编码解码教程及示例》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

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,务必检查错误。

  • 解码前建议先用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变体,二进制数据优先走字节流而非字符串中间转换。

今天关于《Golangbase64编码解码教程示例》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>