编程小知识 之 Base64 编码
source link: https://blog.csdn.net/tkokof1/article/details/113445864
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
本文简述了 Base64 编码的一些知识
在一些 支持可打印字符(而不(完善)支持其他字符) 的开发场景下(譬如原始的电子邮件中),为了能够传输存储二进制数据(广义上的非打印字符),我们需要一种将二进制数据转换为可打印字符的编码方式, Base64 就是这么一种编码方式.
Base64 编码的步骤如下:
- 将待转换的字节数组(即二进制数据)按每 3 个字节分为一组(共 3 x 8 = 24 bit(二进制位))
- 将上述 24 bit 按每 6 bit 一组重新分为 4 组
- 分别计算上面 4 组的索引值(6 bit 一组)
- 根据编码对照表完成转换
Base64 选用 ‘A-Z’ ‘a-z’ ‘0-9’ ‘+’ ‘/’ 这 64 个可打印字符作为编码字符,外加 ‘=’ 作为填充字符,具体的编码对照表如下所示:
现在我们来对二进制数据(如果用 ASCII 码表示的话就是字符串 ABC)进行 Base64 编码
010000010100001001000011 ( A B C ) 010000010100001001000011(ABC) 010000010100001001000011(ABC)
转换过程如下表所示:
Base64 按 3个字节 分组编码,对于字节数组长度不是 3 字节倍数的情况,我们需要进行填充: 先使用 0 字节值在末尾补足,使字节数组长度能够被 3 整除,然后再进行 Base64 编码,最后在编码后的 Base64 文本后加上一个或两个 ‘=’ 号, 用以代表补足的字节数.
下面的示例展示了以下二进制数据的转换过程:
01000001 ( A ) 0100001001000011 ( B C ) 01000001(A) \\ 0100001001000011(BC) 01000001(A)0100001001000011(BC)
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK