Chinaunix首页 | 论坛 | 博客
  • 博客访问: 209526
  • 博文数量: 247
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2501
  • 用 户 组: 普通用户
  • 注册时间: 2020-08-10 06:35
文章分类
文章存档

2024年(32)

2023年(86)

2022年(53)

2021年(42)

2020年(34)

我的朋友

分类: Python/Ruby

2022-11-21 20:11:28

打包和解包

回忆上次内容

  • decode

 

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

编辑
  • 这是为什么呢?????

差距

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

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

16进制

  • 正好是(0x20)16进制

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

ASCII 码表趣事

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

正在上传…重新上传取消

  • 也相差一个2进制位

编辑
  • EBCDIC问题是字母不连续
  • i、j之间不直接相连
  • EBCDIC{BANNED}最佳终被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(空格)
  • 表格{BANNED}最佳左边是什么呢?

ASCII

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

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

ASCII由来

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

正在上传…重新上传取消

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

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

摩斯电码

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

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

摩斯电码通信规则

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

编辑
  • 编码的原则是什么呢?

效率问题

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

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

总结

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

编辑
  • 这摩斯电码是3进制的编码方式
  • 长短空
  • 怎么演化成ascii这种0101的二进制编码的呢?????
  • 下次再说????????
  • 蓝桥->
  • github->
  • gitee->
  • 视频->https:///video/BV1CU4y1Z7gQ 作者:oeasy
阅读(375) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~