Skip to content

Latest commit

 

History

History
251 lines (181 loc) · 6.18 KB

File metadata and controls

251 lines (181 loc) · 6.18 KB
Error in user YAML: (<unknown>): found a tab character that violate indentation while scanning a plain scalar at line 3 column 3
---
- oeasy Python 0296
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
- 本教程同步发布在: 
	- 个人网站: `https://oeasy.org` 
	- 蓝桥云课: `https://www.lanqiao.cn/courses/3584` 
	- GitHub: `https://github.com/overmind1980/oeasy-python-tutorial` 
	- Gitee: `https://gitee.com/overmind1980/oeasypython` 
---

ASCII码表

回忆上次内容

  • decode
    • 就是解码
  • 解码和编码互为因果
    • encode 编码
    • decode 解码
    • 互为过程

图片描述

  • 大小写字母间
    • 序号全都相差(32)10进制
    • 中间 还穿插着符号
    • 为什么不都连在一起呢?🤔

差距

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

图片描述

  • 从10进制角度
    • 看不清楚
    • 换到16进制再看

16进制

  • (32)10进制
    • 正好是(0x20)16进制

图片描述

  • 为什么 不多不少
    • 就差 0x20 呢?
    • 怎么那么呢?🤔

图片描述

  • 再转化为2进制之后
    • 恰好差1位(1-bit)
  • 这是偶然的吗?

ASCII 码

  • ASCII码表 出现之前
    • IBM 还统治着整个信息产业
  • 当时 IBM 使用的编码是
    • EBCDIC 编码
    • 相差的并也不是 0x20

图片描述

  • 而是0x40
    • 也相差一个2进制位

图片描述

  • 为什么
    • 差一个二进制位呢?

变化发生时间

  • 大小写字符序号的二进制形态

    • 差一位(bit)
    • 有两个好处
      1. 更容易 转化
        • 改一位就行了
      2. 更容易 查找
        • 大小写不敏感的字符串匹配
          • 就快多了
  • 这个 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表
    • 都清晰很多了呢!
  • 表格最左边两列
    • 是什么呢?

ASCII

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

图片描述

  • 0x00-0x1F 之间的东西是什么?
    • 这两列 含义都是对应 多个字符的
  • 具体含义目前大多还不知道
    • 仿佛一片黑暗

大小写字母

  • 再看看字符部分
    • 红色的大写字母
    • 蓝色的小写字母

图片描述

  • 这些大小写字母
    • 本来英语里就有
  • 但是 怎么就编码
    • 进入计算机了呢?

ASCII由来

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

图片描述

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

图片描述

  • 电报码 用的是 摩斯电码

摩斯电码

  • 摩斯电码 也是数字编码
    • 分成 长和短 两种信号
      • 就是嘀和嗒
    • 下图 是他的编码表

图片描述

  • 《oeasy 教您玩转电路基础》第 18 话 里面有介绍

  • 还记得encode/decode中的code么?

    • 曾经 指的就是 各种电报编码 汇编
    • 后来电报编码统一 到 摩斯电码
  • 这就是 字符

    • 最初电子化的过程

摩斯电码通信规则

  • 下图是他的通信规则
    • 三个断 确认本字符 结束了
      • 就是字符之间的分隔符

图片描述

  • 录入状态使用 高低
    • 两种电平
  • 表现出长、短、断
    • 三种状态
  • 编码的原则是什么呢?

效率问题

  • 编码的规则 是 常用的字符
    • 点击次数少
  • 按照字符出现概率分配对应点击数量
    • TE 最常用
      • 按一下 就出来
  • 编码原则
    • 是 一棵霍夫曼树
      • 26个字符是不连续的

图片描述

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

总结

  • 上次 我们了解了ASCII码表
    • ASCII 码表就是
      • American Standard Code for Information Interchange
    • 美国 信息交换 标准代码
  • ASCII 码表范围
    • 48-57 这个范围是 数字
    • 65-90 这个范围是 写字母
    • 97-122 这个范围是 写字母

图片描述

  • 知道了这个范围之后
    • 可以玩点什么吗??🤔
  • 下次再说👋🏻

  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。