Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。

Go语言提供了对base64编码解码的支持;

encoding/base64
package main

import (
    "encoding/base64"
    "fmt"
)

func main() {

    data := "hello world"

    enc_str := base64.StdEncoding.EncodeToString([]byte(data))
    fmt.Println(enc_str)

    dec_str, _ := base64.StdEncoding.DecodeString(enc_str)
    fmt.Println(string(dec_str))
}

标准的base64不适合直接放在URL里传输,因为URL编码器会把标准BASE64中的“+”和"/"字符进行编码,变成如“%XX”的形式;所以,衍生出一种用于URL的改进Base64编码,它在末尾填充“=”号,并将标准base64中的“+”和“/"分别改成了”-“和"_"。

URL base64的实现

package main

import (
    "encoding/base64"
    "fmt"
)

func main() {

    data := "hello world"

    enc_str := base64.URLEncoding.EncodeToString([]byte(data))
    fmt.Println(enc_str)

    dec_str, _ := base64.URLEncoding.DecodeString(enc_str)
    fmt.Println(string(dec_str))
}