go语言工资水平是多少?这个其实完全取决于自己,从5K、10K、20K不等,你掌握的技术越精致,越广泛,你的工资水平越高,所以先开启你的学习之旅吧!
9.1字符编码与解码
9.1.1Base64
Base64就是一种基于64个可打印字符来表示二进制数据的方法。Base64使用了26个小写字母、26个大写字母、10个数字以及两个符号(例如“+”和“/”),用于在电子邮件这样的基于文本的媒介中传输二进制数据。Base64通常用于编码邮件中的附件。
Base64字符集如下所示。
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
Base64的编码过程如图所示。
图9.1 Base64
步骤说明如下。
l将每个字符转成ASCII编码(10进制)
l将10进制编码转成2进制编码
l将2进制编码按照6位一组进行平分
l将6位一组的2进制数高位补零,然后转成10进制数
l将10进制数作为索引,从Base64编码表中查找字符
l每3个字符的文本将编码为4个字符长度(3*8=4*6)若文本为3个字符,则正好编码为4个字符长度; 若文本为2个字符,则编码为3个字符,由于不足4个字符,则在尾部用一个“=”补齐;若文本为1个字符,则编码为2个字符,由于不足4个字符,则在尾部用两个“=”补齐,如图所示。
图9.2 Base64编码补齐
接下来通过一个案例演示Base64编码解码,如例所示。
例1-1 Base64
1 package main
2 import (
3 "encoding/base64"
4 "fmt"
5 )
6 func main() {
7 str := "心怀不惧,方能翱翔于天际"
8 cipherText := Base64EncodeString(str)
9 fmt.Println("base64 编码后:",cipherText)
10 fmt.Println("base64 解码后:",Base64DecodeString(cipherText))
11 }
12 func Base64EncodeString(str string) string {
13 return base64.StdEncoding.EncodeToString([]byte(str))
14 }
15 func Base64DecodeString(str string) string {
16 result, _ := base64.StdEncoding.DecodeString(str)
17 return string(result)
18 }
运行结果如图所示。
图9.3 运行结果