首页 体育 教育 财经 社会 娱乐 军事 国内 科技 互联网 房产 国际 女人 汽车 游戏

一文读懂Base64编码

2020-01-21

咱们知道一个字节可表明的规模是 0 ~ 255, 其间 ASCII 值的规模为 0 ~ 127;而超越 ASCII 规模的 128~255之间的值是不行见字符。

ASCII是根据拉丁字母的一套电脑编码体系。它首要用于显现现代英语,而其扩展版别延伸美国规范信息交流码则能够部分支撑其他西欧言语,并等同于国际规范 ISO/IEC 646。

在 ASCII 码中 0 - 31和 127 是控制字符,共 33 个。

其他 95 个,即 32 - 126 是可打印字符,包含数字、大小写字母、常用符号等。

当不行见字符在网络上传输时,比方说从 A 计算机传到 B 计算机,往往要通过多个路由设备,因为不同的设备对字符的处理方法有一些不同,这样那些不行见字符就有或许被处理过错,这是不利于传输的。为了处理这个问题,咱们能够先对数据进行编码,比方 base64 编码,变成可见字符,也便是 ASCII 码可表明的可见字符,然后保证数据牢靠传输。Base64 的内容是有 0 ~ 9,a ~ z,A ~ Z,+,/ 组成,正好 64 个字符,这些字符是在 ASCII 可表明的规模内,归于 95 个可见字符的一部分。

Base64是一种根据 64 个可打印字符来表明二进制数据的表明办法。因为 2⁶ = 64 ,所以每 6 个比特为一个单元,对应某个可打印字符。3 个字节有 24 个比特,对应于 4 个 base64 单元,即 3 个字节可由 4 个可打印字符来表明。相应的转化进程如下图所示:

Base64 常用于在处理文本数据的场合,表明、传输、存储一些二进制数据,包含 MIME 的电子邮件及 XML 的一些杂乱数据。在 MIME 格局的电子邮件中,base64 能够用来将二进制的字节序列数据编码成 ASCII 字符序列构成的文本。运用时,在传输编码方法中指定 base64。运用的字符包含大小写拉丁字母各 26 个、数字 10 个、加号 + 和斜杠 /,共 64 个字符,等号 = 用来作为后缀用处。Base64 相应的索引表如下:

了解完上述的常识,咱们以编码 Man 为例,来直观的感受一下编码进程。 Man 由 M、a 和 n 3 个字符组成,它们对应的 ASCII 码为 77、97 和 110。

接着咱们以每 6 个比特为一个单元,进行 base64 编码操作,详细如下图所示:

由图可知, Man 编码的成果为 TWFu ,很明显通过 base64 编码后体积会添加 1/3。 Man 这个字符串的长度刚好是 3,咱们能够用 4 个 base64 单元来表明。但假如待编码的字符串长度不是 3 的整数倍时,应该怎样处理呢?

以编码字符 A 为例,其所占的字节数为 1,不能被 3 整除,需求补 2 个字节,详细如下图所示:

由上图可知,字符 A 通过 base64 编码后的成果是 QQ== ,该成果后边的两个 = 代表补足的字节数。而最终个 1 个 base64 字节块有 4 位是 0 值。

接着咱们来看另一个示例,假定需编码的字符串为 BC ,其所占字节数为 2,不能被 3 整除,需求补 1 个字节,详细如下图所示:

由上图可知,字符串 BC 通过 base64 编码后的成果是 QkM= ,该成果后边的 1 个 = 代表补足的字节数。而最终个 1 个 base64 字节块有 2 位是 0 值。

在编写 HTML 网页时,关于一些简略图片,通常会挑选将图片内容直接内嵌在网页中,然后削减不必要的网络恳求,可是图片数据是二进制数据,该怎样嵌入呢?绝大多数现代浏览器都支撑一种名为 Data URLs 的特性,答应运用 base64 对图片或其他文件的二进制数据进行编码,将其作为文本字符串嵌入网页中。

热门文章

随机推荐

推荐文章