写点什么

你真的了解 Base64 吗

用户头像
hepingfly
关注
发布于: 2020 年 09 月 03 日
你真的了解 Base64 吗

说 Base64 前先简单说一下 Byte 和 bit 的区别

Byte :字节。数据存储的基本单位。比如移动硬盘 1T,单位就是 Byte。



bit :比特。又叫位。一个位要么是 0 要么是 1。数据传输的单位。比如家里的宽带是 100M,下载速度并没有达到 100M,一般都是 12-13M 。因为需要使用 100/8



1Byte = 8bit



上面这幅图,一个英文字母其实就占一个字节。打印下这个字节,发现就是这个字符对应的 Ascii 码。然后把这个字节转换成比特,发现正好是 8 位。



如果是中文字符的话,在 UTF-8 编码格式下,一个中文字符占 3 个字节。同样的,如上图所示,我把这个中文字符转换成字节数组,就可以知道这个字节数组的长度,发现是 3。



总结下:

  • 根据编码格式不一样,一个中文汉字对应的字节也不一样。

  • 如果是 UTF-8,一个中文对应的是 3 个字节。

  • 如果是 GBK ,一个中文对应的是 2 个字节



下面来正式介绍 Base64



1、先说为什么需要 Base64 编码?

Base64 其实最早是用在邮件传输协议中的,因为邮件传输协议只支持 Ascii 字符传递,所以如果你要传输像图片、视频等这类二进制文件是无法实现的。



这时候你就可以使用 Base64 对二进制文件内容进行编码,编码成只包含 Ascii 字符的内容,这样就可以传输了。



2、Base64 介绍

1)、首先说 Base64 不是加密算法,很多人把 Base64 误以为是一种加密算法,它其实可以说是一种可读性算法。

2)、Base64 它的目的不是为了保护我们的数据,而是为了提高可读性

3)、Base64 是由 64 个字符组成的,大写的 A-Z ,小写的 a-z ,数字 0-9+/ (你发现这几个加起来正好 64 个字符,所以叫 Base64)



3、Base64 的编码过程

假设你要传输的数据是 3400a9 ,现在使用 Base64 对这个数据进行编码,会经过下面几个步骤:

1、首先将待转换的数据进行切分,每 3 个字节分为一组,1 个字节 8 位,所以总共 24 位。



2、对切分后的数据进行重组, 24 位重组成 4 组,这样每组就 6 位。



3、对重组后的数据进行处理,一个字节应该是 8 位,缺少 2 位,在高位进行补齐,高位补 0。构成每组 8 位。



4、根据 base64 编码表,获取相应的编码值。



4、Base64 补等号规则

3个字节是一组,当字节不够的时候,需要使用 = 进行补齐



发布于: 2020 年 09 月 03 日阅读数: 134
用户头像

hepingfly

关注

视频号:hepingfly 分享干货,欢迎关注~ 2018.06.23 加入

B站程序员。目标是做一个有才华,身上有光的男人。

评论

发布
暂无评论
你真的了解 Base64 吗