golang:base64编解码
Go 语言的标准库自带了 Base64 编码算法,通过几行代码就可以对数据进行编码
编解码字符串
package main import ( "encoding/base64" "fmt" ) func main() { // 需要处理的字符串 message := "Away from keyboard. https://golang.org/" // 编码消息 encodedMessage := base64.StdEncoding.EncodeToString([]byte (message)) // 输出编码完成的消息 fmt.Println(encodedMessage) // 解码消息 data, err := base64.StdEncoding.DecodeString(encodedMessage) // 出错处理 if err != nil { fmt.Println(err) } else { // 打印解码完成的数据 fmt.Println(string(data)) } }
base64 包有多种编码方法,这里使用 base64.StdEnoding 的标准编码方法进行编码。传入的字符串需要转换为字节数组才能供这个函数使用。
第 17 行,编码完成后一定会输出字符串类型,打印输出。
package main import ( "encoding/base64" "io/ioutil" "os" ) func main(){ //读原图片 ff, _ := os.Open("b.png") defer ff.Close() sourcebuffer := make([]byte, 500000) n, _ := ff.Read(sourcebuffer) //base64压缩 sourcestring := base64.StdEncoding.EncodeToString(sourcebuffer[:n]) //写入临时文件 ioutil.WriteFile("a.png.txt", []byte(sourcestring), 0667) //读取临时文件 cc, _ := ioutil.ReadFile("a.png.txt") //解压 dist, _ := base64.StdEncoding.DecodeString(string(cc)) //写入新文件 f, _ := os.OpenFile("xx.png", os.O_RDWR|os.O_CREATE, os.ModePerm) defer f.Close() f.Write(dist) }