Base64 一般用于在 HTTP 协议下传输二进制数据,由于 HTTP 协议是文本协议,所以在 HTTP 协议下传输二进制数据需要将二进制数据转换为字符数据。

BASE64 在线编解码工具

然而直接转换是不行的,因为网络传输只能传输可打印字符。

什么是可打印字符?

在 ASCII 码中规定,0~31、128 这 33 个字符属于控制字符,32~127 这 95 个字符属于可打印字符,也就是说网络传输只能传输这 95 个字符,不在这个范围内的字符无法传输,Base64 编码后便可以传输其他字符。

映射表如下:

【基础】Base64 编解码浅析_Base64

Base64 将 3 个字节转变为 4 个字节,因此,编码后的代码量(以字节为单位)约比编码前的代码量多了 1/3。

如果代码量正好是 3 的整数倍,那么恰好多了 1/3。

当多出的代码量不是 3 的整数倍时,代码量除以 3 的余数就是 2 或者 1。转换的时候,结果不够 6 位的用 0 来补上相应的位置,之后再在 6 位的前面补两个 0。转换完空出的结果就用就用 “=” 来补位,总之要保证最后编码出来得字节数是 4 的倍数。

示例:

【基础】Base64 编解码浅析_Base64_02

【基础】Base64 编解码浅析_Base64_03