Base64

182 阅读3分钟

前置知识

一、位

最小的数据单位,一个位代表一个0或1(即二进制)

二、字节

1个字节是8位,表示范围 0000000011111111(即0255)

三、ASCII码

信息交换标准码

由来

在计算机中,所有的数据在存储和运算时都要使用 二进制 数表示,例如,像a、b、c、d这样的52个字母(包括大写)以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,为了互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国相关组织就出台了ASCII 编码,统一规定了上述常用符号用哪些二进制数来表示。

比如键盘按下 a,相当于输入了一串01组合,计算机通过查询ASCII表知道要显示a

ASCII表

ASCII 值的范围为 0 ~ 127(在英语中,用128个符号编码便可以表示所有)

四、为什么1个字节是8位?

一个字节通常可以表示一个ASCII字符(即英文和数字占一个字节,而中文占两个或者更多字节),数据存储以“字节“为单位。

假设

一个字节只有一位(0,1),只能表示两个ascii字符,显然不够,ascii有128个

一个字节只有两位(00,01,10,11),仍然不够

……

2^7 = 128,因此7个就足以表示

同时为了保险,就将8个0和1的组合存储在一个字节中,因此1Byte = 8bit

 

Base64

是什么?

是一种编码方式

所谓base64,就是从ASCII中选出64个可打印字符----小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/"(再加上作为垫字的"=",实际上是65个字符)----作为一个基本字符集。然后,其他所有符号都转换成这个字符集中的字符。

可打印字符

计算机可以直接显示和打印出来的字符,ASCII码值在32~126的字符

  • 数字:'0' 到 '9'
  • 大写字母:'A' 到 'Z'
  • 小写字母:'a' 到 'z'
  • 标点符号:例如:'.'、','、'!'、'?'、';'、':'、'/' 等
  • 特殊符号:例如:'~'、'@'、'#'、'$' 等

 

Base64编码由来

ASCII 值的范围为 0~127,一个字节的范围是0~255

ASCII是美国发明的,128能足够表示他们的英文数字

那么,怎么确保128~255之间的字符,能正确传输呢?

因此要对数据进行编码,转换成字符集中的字符

 

拓展:转换过程

  1. 将每三个字节作为一组,一共是24个二进制位。
  2. 将这24个二进制位分为四组,每个组有6个二进制位。
  3. 在每组前面加两个00,扩展成32个二进制位,即四个字节。
  4. 根据字符集表,得到扩展后的每个字节的对应符号,这就是Base64的编码值

 

例子一:Man(英语) = TWFu (Base64)

image.png  

例子二:严(utf-8编码的中文) = 5Lil(Base64)

注:汉字本身有多种编码、E4B8A5 是汉字"严"在UTF-8编码中的十六进制表示

image.png

参考

www.ruanyifeng.com/blog/2008/0…

进制转换器

Base64 在线编码解码