• 编码技术


    一、编码

    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码

  • 相关阅读:
    2018 秋招找工作总结
    Java 实现 LRU 缓存
    历时2个月,星云链DApp开发总结
    Java 版快速排序 + 最挫的优化
    MacOS 下防止 rm 命令误删
    Java使用Log日志系统(common-logging和log4j)
    IDEA+Maven+Spring+SpringMVC+SpringJDBC整合Demo
    Java简单实现并发编程
    设计模式学习笔记——单例模式
    Java获取网页内容
  • 原文地址:https://www.cnblogs.com/tianyajuanke/p/7240668.html
Copyright © 2020-2023  润新知