📜  Go Base64编码(1)

📅  最后修改于: 2023-12-03 15:30:59.619000             🧑  作者: Mango

Go Base64 编码

Base64 是一种编码方式,它能够将二进制数据转换成可打印的字符集编码,通常用于在HTTP环境下传输字节数组。Go语言中通过 encoding/base64 包提供了Base64编码和解码的函数。

Base64 编码

要对二进制数据进行Base64编码,可以使用 encoding/base64 包中的 EncodeToString() 函数。该函数的参数是一个字节数组,返回值是该字节数组的Base64编码字符串。

package main

import (
    "encoding/base64"
    "fmt"
)

func main() {
    data := []byte("hello world")
    str := base64.StdEncoding.EncodeToString(data)
    fmt.Println(str)
}

输出结果:

aGVsbG8gd29ybGQ=
Base64 解码

要对Base64编码的字符串进行解码,可以使用 encoding/base64 包中的 DecodeString() 函数。该函数的参数是一个Base64编码的字符串,返回值是解码后的字节数组。

package main

import (
    "encoding/base64"
    "fmt"
)

func main() {
    str := "aGVsbG8gd29ybGQ="
    data, err := base64.StdEncoding.DecodeString(str)
    if err != nil {
        fmt.Println("error:", err)
        return
    }
    fmt.Println(string(data))
}

输出结果:

hello world
自定义Base64编码

在使用 encoding/base64 包提供的函数进行Base64编码时,会依据Base64标准对数据进行编码,如果需要使用自定义字符集进行编码可以使用 NewEncoding() 函数,该函数返回一个自定义编码结构体,结构体中包含了自定义字符集的编码和解码方法。

package main

import (
    "encoding/base64"
    "fmt"
)

func main() {
    data := []byte("hello world")

    encode := base64.NewEncoding("ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba9876543210+/")

    str := encode.EncodeToString(data)
    fmt.Println(str)

    decode, err := base64.NewEncoding("ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba9876543210+/").DecodeString(str)
    if err != nil {
        fmt.Println("error:", err)
        return
    }
    fmt.Println(string(decode))
}

输出结果:

vGKdP7fZaqWblwLg==
hello world
总结

Go语言提供了 encoding/base64 包,用于实现Base64编码和解码。通过使用该包提供的函数,可以方便地对二进制数据进行编码和解码操作。另外,该包还支持自定义编码字符集,可以根据实际需求进行自定义。