1、编码编码
一、base64 编码url
base64编码是将文本从新编码,转化成指定 64个可见ASCII字符的形式,这64个字符包括 A~Z, a~z, 0~9, + 和 / spa
其原理是将原文本按每3个字节取出来,每 6bit 依次拆开,首部补上2bit的0值,这样本来3字节的数据就变成了新的4字节。索引
从原理可知,base64编码以后,最终文本会比原文本增长33.3%。it
须要注意的是,若是原文本取到最后,不足3字节,则不足6bit部分,除首部补上2bit的0值以外,尾部也补上0值,凑足8bit。base64
那新拼成的4字节是按标准的ASCII码显示吗?不是,是按一份约定好的索引表,该表以下:table
数值 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
字符 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | a | b | c | d | e | f |
数值 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |
字符 | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | + | / |
须要注意的是,若是不足3字节,缺乏几个字节就在最终编码后面补上几个=号,即最多能够补两个=号。原理
好比对 go 进行 base64 ,首先就能猜到最终编码末尾会补上一个 = 号,而后咱们看一下原文的ASCII码, g 是 103 即 01100111, o 是 111 即 01101111,放到一块儿是 0110011101101111,按每 6bit 分割为 011001 | 110110 | 1111 ,补好首部和尾部是 00011001 | 00110110 | 00111100 ,转成十进制为 25 | 54 | 60 ,查表得出 Z | 2 | 8,即 Z28,再补上一个=号,最终结果是 Z28=二进制
base64能够将不可见字符转成可见字符传输,在 STMP 协议和其它文本协议中比较经常使用。此外在HTTP协议中,有时也会进行base64或url编码,来转换掉一些特殊字符。数据
二、url编码
三、16进制编码(二进制编码、64进制编码[base64])
四、ASCII码