码迷,mamicode.com
首页 > 其他好文 > 详细

Base64编码

时间:2018-05-21 14:25:44      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:传统   字符转换   src   img   渠道   字符   转换   图片   正是   

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编码

标签:传统   字符转换   src   img   渠道   字符   转换   图片   正是   

原文地址:https://www.cnblogs.com/youhong/p/9066533.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!