Base64编码

Posted 小丸子的城堡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Base64编码相关的知识,希望对你有一定的参考价值。

Base64的来源

Base64的主要用途是将不可打印字符转换成可打印字符,而什么需要这样转换呢?因为有些网络传输渠道并不能支持传输所有字节,一些不可见字符(如控制字符)在传统的邮件系统中就无法传输,而例如图片文件不可能每个字节都是可见字符,这样就导致用途这些渠道的用途受到很大限制。Base64正是解决这一问题,通过64个可见字符来编码各种字符,使得数据在各渠道上得以正常传输。

Base64的原理

首先,我们看一下Base64的索引表。

技术分享图片

可以看到一共有64个字符,包括"A-Z,a-z,0-9,+,/"。在编码过程中,就是通过转换得到的数字索引,对应相应的字符就可以得到Base64编码。
下面以一个例子来看一下具体过程。

技术分享图片
文本“Man”在计算机中是以二进制位的形式保存,每个字符文本为8位,而Base64的一个字符只有6位,6位如何表示8位呢?就是取6和8的最小公倍数24,那么就是每3个字符可以通过4个Base64字符来表示,例子中的“Man”就表示为“TWFu”。
每3个字符进行编码,就有可能出现不够3个字符的情况,怎么办?不足3个字符时,在末尾补0凑足6的倍数。另外,Base64的最小单位是4个字符(24位)一组,因此在补0后仍然不足24位的时候,每6位补一个“=”。具体见以下例子。
技术分享图片
因此,Base64只可能在末尾出现一个或者两个“=”,中间不可能出现“=”,这一点也可以用来区分多段Base64编码。

为什么不是Base32/Base16

Base64编码对应传统字符的字符比是4:3,如果是Base32则字符比是8:5,如果是Base16则字符比是2:1,显然Base64的比例最高,可以以更少的字符转换同样的文本。

采用Base64对图片编码

对图片采用Base64编码:

  • 不需要额外的请求
  • 适用于较小的图片(由于Base64会导致字节数增加,因此不要用于大的图片)

以上是关于Base64编码的主要内容,如果未能解决你的问题,请参考以下文章

将 Base64 编码图像加密为另一个有效的 Base64 编码图像

Base64编码

base64编码与base64解码

base64编码解码

Base64编码

Base64编码的长度问题-文件越大Base64的值越长