只要和计算机打交道就涉及到编码和解码。
常用编码
进制
- 二进制
- 十进制
十六进制
Hex: 由0~9 A B C D E F构成,表示的长度更短
与二进制转换: 每4位一组,位数不够高位补0
ASCII
ASCII码: 美国信息交换标准代码 (可读性更强) : 由(128个)英文及常用符合组成
UTF-8
又称万国码。
Base64
64个可读字符进行编码, 介于 Hex和ASCII(去除了不可读字符).
- 方便把含有不可见字符的信息用可见字符表示出来, 以便复制粘贴.
- 方便通信转换, 使用场景: X.509公钥证书, 电子邮件数据/附件 (MIME)
数字 + 小写字母 + 大写字母 和 + /
按顺序为: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
改进Base64(URL Safe Base64 )
标准Base64问题:
- +/经常用于文件系统和URL,容易冲突 ;
- padding字符=常用于URL, 比如URL编码器会把 +和/变成 %XX的形式 (存入数据库还需要再次转换,因为%是通配符).
为解决以上问题, 改进Base64(URL Safe Base64 ) 把 +和/分别替换成 -和_,同时去掉末尾的padding.
- 每3个8位转换成4个6位,每组添加2个高位0后成为4个8位, 即理论增加1/3长度\
- 特点: 能被4整除, =后缀数为0,1,2个.