• 为什么有的代码要用 base64 进行编码


    一、1、传输信道只支持ASCII字符,不方便传输二进制流的场合。

          2、含有非ASCII字符,容易出现编码问题的场合。

          3、简易的掩人耳目。至少非开发人一眼看不出来是啥。

    二、Base64主要用于将不可打印的字符转换成可打印字符,或者简单的说将二进制数据编码成ASCII字符。

    将二进制数据编码成ASCII字符主要的目的是能在纯文本内容中插入二进制数据,常见的应用场景包括:

    1. 电子邮件

      这个可参考阮一峰的《MIME笔记》

    2. 微软的MHT格式

      这是模仿邮件格式将多种资源打包在一个文件中的格式,所有二进制资源都采用 Base64 编码。

    3. XML文件

      这是一个纯文本文件,如果要基于 XML 格式设计可以保存图片或其它附件的数据格式,那就需要将这些二进制数据转码成 ASCII 字符。

    4. DATA URL

      最近流行起来的 Data URL,要在URL中使用二进制数据,当然也只能进行 ASCII 编码

    当然除了 Base64 之外,还有其它一些编码方式可以将二进制数据编码成 ASCII 字符,比如十六进制编码,除此之外还有 Quoted-printable 等。甚至 URL 中使用 %XX 来对非 ASCII 字符进行编码的方式也可以算在内。

    当然一般非特定环境下,选用十六进制编码和 Base64 编码的情况比较多,主要是因为这两种编码易用,而且转换后的数据量相对较小。

    十六进制编码是将 1 个字节编码成 2 个十六进制字符,比如 0x10110110 编码成 B6,转换后数据量会增大 1 倍

    Base64 编码是将 3 个字节共 24 位数据,以每 6 位一个 Base64 字符 [0-9a-zA-Z+/] 表示,24 位数据共需要 4 个 Base64 字符表示,编码后数据增长约 1/3。为什么是“约”?因为如果原数据字节数不是 3 的倍数,需要补位,这样转换出来的数据量就会比原来的 4/3 略多一点。

    从上面的数据增长比来看,Base64编码 比十六进制编码更节省磁盘容量,所以一般较大的数据需要进行 ASCII 编码多采用 Base64;而较小的数据,则使用易于人工识别十六进制(用纸笔就能解码出来)。

  • 相关阅读:
    验证整数或小数
    数据库的连接查询比较
    批处理按钮
    事务 SQL
    关于GridView模板的一些总结
    C#数据结构之线性表
    C#面向对象基础
    C#集合类:动态数组、队列、栈、哈希表、字典
    如何更改master中WebParts中自定义控件的值。
    如何取得web.config中connectings中的值
  • 原文地址:https://www.cnblogs.com/slu182/p/4269530.html
Copyright © 2020-2023  润新知