前置知识
一、位
最小的数据单位,一个位代表一个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之间的字符,能正确传输呢?
因此要对数据进行编码,转换成字符集中的字符
拓展:转换过程
- 将每三个字节作为一组,一共是24个二进制位。
- 将这24个二进制位分为四组,每个组有6个二进制位。
- 在每组前面加两个00,扩展成32个二进制位,即四个字节。
- 根据字符集表,得到扩展后的每个字节的对应符号,这就是Base64的编码值
例子一:Man(英语) = TWFu (Base64)
例子二:严(utf-8编码的中文) = 5Lil(Base64)
注:汉字本身有多种编码、E4B8A5 是汉字"严"在UTF-8编码中的十六进制表示
参考
www.ruanyifeng.com/blog/2008/0…