Base64

1、介绍

Base64编码,是程序开发中经常使用到的编码方法。因为base64编码的自负床,更适合不同平台,不同语言的传输(一个字符可能其他系统没有)。他是一种基于64个可打印字符来表示二进制数据的标识方法。他通常用作存储,传输一些二进制数据编码方法,一句:将二进制数据文本化(转成ASCII)

2、作用

1、由于某些系统中只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法。
2、对二进制文件进行文本化后的传输
3、前后台交互时,经常使用base64,这样可以避免特殊字符传输错误

3、Base64编码表

在这里插入图片描述

4、示例说明

以下图的表格为示例,我们具体分析一下整个过程。
在这里插入图片描述
第一步:“M”、“a”、"n"对应的ASCII码值分别为77,97,110,对应的二进制值是01001101、01100001、01101110。如图第二三行所示,由此组成一个24位的二进制字符串。
第二步:如图红色框,将24位每6位二进制位一组分成四组。
第三步:在上面每一组前面补两个0,扩展成32个二进制位,此时变为四个字节:00010011、00010110、00000101、00101110。分别对应的值(Base64编码索引)为:19、22、5、46。
第四步:用上面的值在Base64编码表中进行查找,分别对应:T、W、F、u。因此“Man”Base64编码之后就变为:TWFu。

位数不足情况

上面是按照三个字节来举例说明的,如果字节数不足三个,那么该如何处理?
在这里插入图片描述
两个字节:两个字节共16个二进制位,依旧按照规则进行分组。此时总共16个二进制位,每6个一组,则第三组缺少2位,用0补齐,得到三个Base64编码,第四组完全没有数据则用“=”补上。因此,上图中“BC”转换之后为“QKM=”;
一个字节:一个字节共8个二进制位,依旧按照规则进行分组。此时共8个二进制位,每6个一组,则第二组缺少4位,用0补齐,得到两个Base64编码,而后面两组没有对应数据,都用“=”补上。因此,上图中“A”转换之后为“QQ==”;

package main

import (
	"encoding/base64"
	"fmt"
)

func main(){
	fmt.Println("标准base64编码...")
	info := []byte("国足宇宙第一!!!")
	encodeInfo := base64.StdEncoding.EncodeToString(info)
	fmt.Printf("encode info 1:%s\n",encodeInfo)
	fmt.Printf("URL base64...\n" )
	encodeInfo = base64.URLEncoding.EncodeToString(info)	//因为URL中有一些特殊字符,因此有专门的函数
	fmt.Printf("URL encode info 1:%s\n",encodeInfo)
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章