在线文档  >   Golang练习   >   Base64 编码

Go 提供了内置支持的base64编码/解码。

package main

// 这个语法使用b64名称而不是默认的base64导入了 `encoding/base64` 包。
// 这将在下面为我们节省一些空间。
import (
    b64 "encoding/base64"
    "fmt"
)

func main() {

    // 这里是我们要编码/解码的`string`。
    data := "abc123!?$*&()'-=@~"

    // Go 支持标准和 URL 兼容的base64。
    // 这是如何使用标准编码器进行编码的。
    // 编码器需要一个 `[]byte`类型,因此我们将我们的`string`转换为该类型。
    sEnc := b64.StdEncoding.EncodeToString([]byte(data))
    fmt.Println(sEnc)

    // 解码可能会返回一个错误,如果您不知道输入是否规范,则可以检查该错误。
    sDec, _ := b64.StdEncoding.DecodeString(sEnc)
    fmt.Println(string(sDec))
    fmt.Println()

    // 这编码/解码使用的是 URL 兼容的base64格式。
    uEnc := b64.URLEncoding.EncodeToString([]byte(data))
    fmt.Println(uEnc)
    uDec, _ := b64.URLEncoding.DecodeString(uEnc)
    fmt.Println(string(uDec))
}

运行结果如下:

$ go run base64-encoding.go
YWJjMTIzIT8kKiYoKSctPUB+
abc123!?$*&()'-=@~

YWJjMTIzIT8kKiYoKSctPUB-
abc123!?$*&()'-=@~

字符串使用标准和 URL base64 编码器编码为略有不同的值后缀为 + 和 -),但它们都根据需要解码为原始字符串。