zoukankan      html  css  js  c++  java
  • 编码技术

    一、编码

    1、base64 编码

      base64编码是将文本重新编码,转化成指定 64个可见ASCII字符的形式,这64个字符包括 A~Z, a~z, 0~9, + 和 /  

      其原理是将原文本按每3个字节取出来,每 6bit 依次拆开,首部补上2bit的0值,这样原本3字节的数据就变成了新的4字节。

      从原理可知,base64编码之后,最终文本会比原文本增加33.3%。

      需要注意的是,如果原文本取到最后,不足3字节,则不足6bit部分,除首部补上2bit的0值之外,尾部也补上0值,凑足8bit。

      那新拼成的4字节是按标准的ASCII码显示吗?不是,是按一份约定好的索引表,该表如下:

    数值 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编码,来转换掉一些特殊字符。

    2、url编码

    3、16进制编码(二进制编码、64进制编码[base64])

    4、ASCII码

  • 相关阅读:
    处理客户端无法及时更新js、css
    关于JQ判断单选复选被选中
    一路风景,一路欣赏,一路有你
    Adobe Dreamweaver CC 2015新功能
    Eclipse导出APK文件报错 android lint problem
    swift2.0 计算圆面积
    zendStudio连接远程服务器报错java.net.SocketException
    IOS tableview 消除 分割线短 15 像素 ios8方法 swift版
    应用之间调用 UIApplication类的OpenURL方法
    iOS8 今日扩展
  • 原文地址:https://www.cnblogs.com/tianyajuanke/p/7240668.html
Copyright © 2011-2022 走看看