show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
-
ASCII 由这样几类字符构成
- 英文大写字符
- 英文小写字符
- 数字
- 符号
-
电报时代对于英文、数字的编码
- 用的是
摩斯电码
- 用的是
- 摩斯电码靠的是
- 长、短、断
- 26个字符不连续
- 这26个字符是怎么演化成
- 序号连续的 ascii编码的 呢?🤔
- 电报传过来
- 需要解码并记录
- 于是有了电传打字机(tele-typewriter)
- 电传打字机
- 需要统一编码的 字母和数字
- ASCII最早是
- 7-bit电传打字机(tele-typewriter)的
- 存储代码
- 7-bit电传打字机(tele-typewriter)的
- 当时的7个打孔位置
- 变成了
- 今天的7个bit
- 变成了
- 要把 滴、答、停的 电报信号
- 变成 0和1的 二进制信号
- 贝尔公司 控制着 电报行业
- 电报行业 要用 打字机 发送和接受 电报信号
- 主要设备 就是 电传打字机
- 贝尔公司提出草案
- 试图建立标准
- 贝尔公司提出草案
- 主要设备 就是 电传打字机
- 电报行业 要用 打字机 发送和接受 电报信号
- 1960年10月6日
- 美国标准协会(ASA)X3 召开首次会议
- ASCII标准开始了进化
- 美国标准协会(ASA)X3 召开首次会议
- 美国标准协会(ASA)
- 进化为美国国家标准协会
- American National Standards Institute
- 简称ANSI
- 继续帮助ASCII演化
- 进化为美国国家标准协会
- (ASA X3.4-1963) 第一次明确
- 大小写字母之间 只差
一
个二进制位
- 大小写字母之间 只差
- 这很重要
- 因为
- 上游 影响 下游
- 因为
- 错误编码 一旦 成为标准
- 所有 应用了错误编码的 文件
- 就
都
废掉了
- 就
- 所有 应用了错误编码的 文件
- ASCII 和 序号 是如何对应的呢?
- 先看看"oeasy"这个字符串
- 是如何存在的🤔
- 字符都对应着一个数字
- 数字 在计算机上
- 究竟是 如何存储 的呢?
- 用 二进制形式
- 存储在
字节
中
- 存储在
- 数字 在计算机上
- 可以看看这个二进制形式么?
- 8-bit 构成 byte
- 上图的字节为
- (0011 0101)2进制
- (35)16进制
- 对应着字符数字'5'
- 我想把序号 从0到127 的 ASCII字符
- 全都打出来
- 可以么?
- 全都打出来
- 回忆编写show.py
for n in range(128):
print(chr(n),end="")
if n % 16 == 0:
print()
- 确实可以输出出来
- 这输出 靠的是
- 把序号转化成字符的 函数
- chr
- 把序号转化成字符的 函数
- 但 没有看到数字
0
?- 理论上 0在1之前
- 仿佛 已经被黑暗森林 所吞没
- 理论上 0在1之前
for n in range(128):
print(chr(n).encode(),end="")
if n % 8 == 7:
print()
- 运行结果
- 0和前面的字节都现了形
- 红底部分
- 黑暗森林仿佛看得见了
- 0a 对应的字节状态是
- b"\n"
- 使用ord 得到\n 的序号
- 0x0a对应的 字符是 '\n'
- 这
\n
字符 好像在 哪里 见过?🤔
- 想要了解 这个'\n'
- 还得 回到最初
- 回到 开始的时候
- 前面介绍过
- BWK 写的 c语言 "hello world"
- 注意到
hello world
后面的\n
了 吗?- 特别注意 斜杠的方向
- 左上到右下
\
叫 反斜杠- 键盘位置 在回车键附近
- 左上到右下
- 特别注意 斜杠的方向
- 那
\n
到底 是什么??🤔
\n
是一个整体- 占
一
个字节 - 算
一
个字符 - 序号是(
10
)10进制
- 也就是(
0x0a
)16进制
- 这就是在开篇时的
abcd
后面的字符 - \n 在vim中 显示为一个.
- 占
- 换行符 序号是10
- 位于 黑暗森林深处
- 这个换行符
\n
怎么用呢
- 电报信号 本来是 滴答空
- 开始 用电传打字机
- 控制 电报信号收发
- 开始 用电传打字机
- 电传打字机数据 可以存储于纸带上
- 每行 有7个空
- 总共 可以表示128个字符
- 每行 有7个空
- 这就是 ASCII的由来
- 有些字符 我们是能看到的
- 还有些字符 我们看不到
- 比如换行符
\n
- 可以输出这个换行符
\n
吗?🤔 - 我们下次再说!👋