打包和解包

回忆上次内容

  • decode

 

  • 就是解码
  • 解码和编码可以转化
  • encode 编码
  • decode 解码
  • 互为逆过程
  • 大小写字母之间序号全都相差(​​32​​)​​10进制​

  • 这是为什么呢?🤔

差距

  • 大写字母和小写字母
  • 总是相差(​​32​​)​​10进制​

  • 从10进制角度看不清楚
  • 我们从16进制的角度看看

16进制

  • 正好是(​​0x20​​)​​16进制​

  • 为什么不多不少
  • 就差 0x20 呢?
  • 怎么那么寸呢?🤔
  • 转化为2进制之后
  • 恰好是1位(bit)
  • 这是偶然的吗?

ASCII 码表趣事

  • 其实最初相差的并不是 0x20
  • 之前 ibm 的 EBCDIC 编码也是这样的

正在上传…重新上传取消

  • 也相差一个2进制位

  • EBCDIC问题是字母不连续
  • i、j之间不直接相连
  • EBCDIC最终被ascii所淘汰

ASCII

  • ASCII字母是连续的
  • 而且大小写字母间
  • 相差正好是 1个 二进制位
  • 对应 b6 这个位
  • 那为什么要差 1个 二进制位 呢?

  • 有了这种对应关系之后
  • 做大小写不敏感的字符串查找就快多了
  • 这个 0x20 发生在 1963 年 5 月
  • The X3.2.4 task group voted its approval for the change to ASCII at its May 1963 meeting.
  • Locating the lowercase letters in columns 6 and 7 caused the characters to differ in bit pattern from the upper case by a single bit, which simplified case-insensitive character matching and the construction of keyboards and printers.
  • 当时的目的是
  • 降低大小写不敏感字符串匹配的难度
  • 降低打字机键盘的构造成本
  • 如果搜索中遇到的是小写字母
  • 修改1位之后
  • 小写就都变成大写
  • 不用查找对应关系表匹配
  • 然后再观察全大写的情况下是否匹配
  • 这就是大小写字母的情况
  • ​0x41-0x5A​​这个范围是大写字母
  • ​0x61-0x7A​​这个范围是小写字母
  • 除了大小写字母之外
  • 数字字符又是如何表示的呢?

ASCII 码表范围

  • ​0x30-0x39​​这个范围是数字
  • 数字的编码减去​​0x30​​正好得到数字本身
  • 后四位刚好是BCD编码模式
  • Binary-Coded Decimal

  • 我们再来看看 ASCII 除了字母和数字还有什么?

各种符号

  • 各种符号是不连续的

  • 穿插在数字、字母周围
  • sp 其实就是space(空格)
  • 表格最左边是什么呢?

ASCII

  • ​0x20-0x7F​​ 之间有各种真实字符

  • ​0x00-0x1F​​ 之间的东西是什么?
  • 前两列都是对应多个字符的
  • 具体含义目前还不知道
  • ASCII中的字符本来英语里就有
  • 但是字符是英文字符、数字和标点
  • 怎么编码的呢?

ASCII由来

  • ASCII码是由电报代码发展而来的

正在上传…重新上传取消

  • 由贝尔数据服务公司推广

编辑

  • 电报码不是摩斯电码吗?

摩斯电码

  • 更早之前确实是摩斯电码
  • 下图是他的编码表
  • 分成长和短两种信号,就是嘀和嗒

  • 欢迎您有机会来看看oeasy电学、科学史那几个系列
  • 还记得encode/decode中的code么?
  • 曾经一度指的就是各种电报编码汇编
  • 后来统一到摩斯电码

摩斯电码通信规则

  • 下图是他的通信规则
  • 三个断确认本字符结束了
  • 三个断就是字符之间的分隔符
  • 录入状态并不是 0、1 两种状态
  • 而是长、短、暂停三种状态

  • 编码的原则是什么呢?

效率问题

  • 编码的规则是常用的字符点击次数少
  • 按照字符出现概率分配对应点击数量
  • ​T​​、​​E​​ 出现频率最高
  • 所以用一次点击电键的数量
  • 本质上是一棵霍夫曼树

  • 当时发射和接收全靠人
  • 什么叫长、什么叫短、什么叫断
  • 发送者控制发报速度
  • 接收者跟着这个发报速度
  • 现查表是来不及的
  • 需要熟悉
  • 摩斯电码码表
  • 常用缩写
  • 这摩斯电码是3进制的编码方式
  • 怎么变成ascii这种0101的二进制编码的呢?

总结

  • ASCII 由这样几类字符构成
  • 英文大写字符
  • 英文小写字符
  • 数字
  • 符号
  • 电报时代对于英文、数字的编码
  • 使用的是摩斯电码

  • 这摩斯电码是3进制的编码方式
  • 长短空

原文地址:http://www.cnblogs.com/oeasy/p/16913068.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性