ASCII 码表

回忆上次内容

  • ​ord(c)​​和​​chr(i)​
  • 这是俩函数
  • 这俩函数是一对,相反相成的⚖️
  • ​ord​​ 通过 ​​字符​​ 找到对应的 ​​数字​
  • ​chr​​ 通过 ​​数字​​ 找到对应的 ​​字符​
  • ​字符​​ 的本质是 ​​数字​
  • 字符都对应着一些数字
  • ​a​​ 对应 97
  • ​b​​ 对应 98
  • ​c​​ 对应 99
  • 都连号好像应该是天经地义的?
  • 为什么小写a从97开始?
  • 但除了小写字母之外还有很多字符
  • 他们都是如何分布的呢?

小写字母

#输出a,b,c
ord("a")
ord("b")
ord("c")
#输出a的相对序号
ord("a")-ord("a")
#输出z-a的数字差距,相对序号
ord("z")-ord("a")
  • a、b、c 这些字符是挨着的
  • 正好从0到25,总共26个
  • 对应数字也是挨着的

编辑

编码规律

  • 从 a-z 应该都是挨着的
  • 26 个英文字母
  • 为什么是从 97 开始?
  • 应该还有别的字符
  • 低头看一下键盘

编辑

  • 除了小写字母之外
  • 大写字母
  • 数字
  • 符号
  • 大概有多少个字符呢?

字符全排列

  • 每一个字符都会对应一个序号
  • 序号用二进制的方式存在字节(byte)中
  • 一个字节(byte)总有8位(bit)
  • 每一位(bit)是一个二进制(binary)数字(digit)

编辑

  • 从 ​​8个0​​ 到 ​​8个1​​ 相当于
  • 从 ​​0​​ 到 ​​255​

编辑

  • 我想要
  • 把所有可能的序号对应的字符都数一遍
  • 可行么?

遍历范围

for i in range(2 ** 8):
print(i,end=",")
  • 遍历范围是[0, 28)
  • 也就是[0, 256)
  • 前闭后开
  • 不包含256

编辑

  • 我们先把 从0到255 挨排儿捋一遍

编辑

  • 如何通过序号找到对应的字符呢?

对应的字符

  • 通过数字找到对应的字符是chr
for n in range(255):
print(chr(n),end="")
if n % 16 == 0:
print()
  • print(chr(n),end="")
  • chr(n)
  • 输出n的字符状态
  • end=""
  • 结束时什么也不输出
  • 不输出默认的换行
  • if n % 16 == 0:
  • print()
  • 如果n能被16整除
  • 那么输出换行

编辑

  • 结果如何呢?

结果

编辑

  • 字母和数字还是挺完整的
  • 这套对应关系有没有个名字呢?

ASCII 码表

  • 当时美国的工程师定义了一套编码规则
  • ​ASCII​
  • ​A​​merican ​​S​​tandard ​​C​​ode for ​​I​​nformation ​​I​​nterchange
  • 美国信息交换标准代码

编辑

  • 这建立起了 ​​字符​​ 和 ​​二进制01​​ 的 ​​映射关系​
  • ​字符​​ 和 ​​二进制数​​ 的 ​​映射关系​​ 如果不一致
  • 面对同一个二进制数 01010101
  • 就会映射到不同的字符
  • 人们看到不同的字符就认为是乱码
  • 这套ascii标准在各种计算机系统中需要统一
  • 否则无法通信
  • 这个 ASCII 什么时候开始有的呢?

初现

  • 1967 年的时候就有了最初这个 ASCII 码表
  • 当时计算机
  • 低电平表示 0
  • 高电平表示 1
  • 电子计算机中所有的数据都是 0 和 1

编辑

  • 先是由美国国家标准学会制定
  • (American National Standard Institute , ANSI )
  • 最初是美国的国家标准
  • 被称作美国信息交换标准代码
  • 美国之外的国家如何编码基本字符呢?

国际化

  • 后来是国际标准化组织定为国际标准ISO
  • International Organization for Standardization a.k.a. ISO
  • 称为 ISO 646 标准

编辑

  • 最后一次更新则是在 1986 年
  • 到目前为止共定义了 128 个字符
  • 能否完整系统地看到整个ascii码表的对应关系呢?

ascii

  • 我们先来下个ascii程序
sudo apt install ascii
  • 上面的命令可以安装ascii这个应用

编辑

使用ascii

  • 每一字符有三个部分组成
  • Dec 对应的是 10 进制数
  • Hex 对应的是 16 进制数
  • 最后一列 对应的是 具体字符或功能

编辑

  • 字符包括
  • 控制
  • 符号
  • 英文大写字母
  • 英文小写字母
  • 这样就把各种字符和一个二进制数字对应起来了

解码 ASCII

  • 我们找到小写的​​a​
  • 这个小写的 ​​a​​ 在电脑中存储的时候
  • 对应着一个字节
  • 8位2进制数
  • 也就是8位(0或者1)
  • 到底是多少呢?
  • 先沿着下图中1的方向
  • 向上找到​​110​
  • 这是他的高三位
  • ​765​​位

编辑

  • 再沿着2的方向
  • 向左找到​​0001​
  • 这是他的低四位
  • ​4321​​位
  • 在前面加一个​​0​
  • 得到(​​01100001​​)​​2进制​

总结

  • 这次我们了解了​​ASCII​​码表
  • ​ASCII​​ 码表就是
  • ​A​​merican ​​S​​tandard ​​C​​ode for ​​I​​nformation ​​I​​nterchange
  • 美国信息交换标准代码
  • ASCII 码表范围
  • ​0x30-0x39​​ 这个范围是 ​​数字​
  • 数字的编码减去 ​​0x30​​ 正好得到数字本身
  • ​0x41-0x5A​​ 这个范围是 ​​大​​ 写字母
  • ​0x61-0x7A​​ 这个范围是 ​​小​​ 写字母
  • ​0x20-0x7F​​ 之间各处零散排布着各种符号

编辑

[oeasy]python0013_ASCII码表_英文字符编码_键盘字符的更多相关文章

  1. 一、java基础-数据类型_数据类型转化_字符编码_转义字符

    1.Java  支持的8种基本数据类型: java的四种整数数据类型:byte 1    short 2     int4     long8   byte     8位带符号整数 -128到127之 ...

  2. eclipse设置字体_字符编码_快捷键

    eclipse设置字体.字符编码.快捷键 1.设置字体: preferences->general->appearnce->colors and fonts-->basic-- ...

  3. 【字符编码】Java字符编码详细解答及问题探讨

    一.前言 继上一篇写完字节编码内容后,现在分析在Java中各字符编码的问题,并且由这个问题,也引出了一个更有意思的问题,笔者也还没有找到这个问题的答案.也希望各位园友指点指点. 二.Java字符编码 ...

  4. Day2_数字类型_字符串类型_列表类型_元组_字典_集合_字符编码_文件处理

    数字类型: 作用:年纪,等级,薪资,身份证号等: 10进制转为2进制,利用bin来执行. 10进制转为8进制,利用oct来执行. 10进制转为16进制,利用hex来执行. #整型age=10 prin ...

  5. Day2_元组_字典_集合_字符编码_文件处理

    元组: 作用:存多个值,元组不可变,主要用来读 age=(11,22,33,44,55) print(age[2]) #取出元组内的值 print(age[1:4]) #取出元组内的某些值 print ...

  6. [19/03/28-星期四] IO技术_基本概念&字符编码与解码

    一.概念 输入(Input)  指的是:可以让程序从外部系统获得数据(核心含义是“读”,读取外部数据) 常见的应用: Ø 读取硬盘上的文件内容到程序.例如:播放器打开一个视频文件.word打开一个do ...

  7. Python基础(5)_字符编码、文件处理

    一.文件读取过程: 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容也都是存放与内存中的,断电后数 ...

  8. python之路-python字符编码

    编码的发展 py2的字符编码 py3的字符编码 编码的发展: 编码表:编码是信息从一种形式或格式转换为另一种形式的过程也称为计算机编程语言的代码简称编码.编码表记录着我们常见的明文所对应的计算机二进制 ...

  9. Python字符编码和二进制不得不说的故事

    二进制 核心思想: 冯诺依曼 + 图灵机 电如何表示状态,才能稳定? 计算机开始设计的时候并不是考虑简单,而是考虑能自动完成任务与结果的可靠性, 简单始终是建立再稳定.可靠基础上 经过尝试10进制,但 ...

  10. linux中修改字符编码

    一. ubuntu修改字符编码 1. 添加字符编码,例如zh_CN.UTF-8,有两种方式 方法1:locale-gen zh_CN.UTF-8   #locale-gen命令只在ubuntu中才有 ...

随机推荐

  1. linux下RPM工具的使用:RPM安装/查询/查看/卸载/升级软件包

    目录 一.关于软件包 二.RPM软件包 三.RPM包通用的命名规则 四.RPM工具的使用 4.1 rpm安装软件的功能 4.2 rpm查询的功能 4.3 rpm查看软件包内容是否被修改 4.4 rpm ...

  2. JDK动态代理的深入理解

    引入代理模式 代理模式是框架中经常使用的一种模式,动态代理是AOP(面向切面编程)思想的一种重要的实现方式,在我们常用的框架中也经常遇见代理模式的身影,例如在Spring中事务管理就运用了动态代理,它 ...

  3. harbor 构建企业级镜像仓库

    安装harbor 构建企业级镜像仓库 Harbor是由VMware公司开源的镜像仓库,harbor是在docker Registry上进行了企业级扩展,从而获得了更广泛的应用,这些新的企业级特性包括: ...

  4. ubuntu下openCV-Haar特征分类器训练

    ubuntu下openCV-Haar特征分类器训练 这段时间在学openCV,准备做一个头部检测,但是openCV自带的分类器只有人脸检测的,而且准确度不高,就准备自己训练一个分类器.在网上看了很多的 ...

  5. ReplayKit2 采集音视频回调格式

    一.音频 ReplayKit2 RPSampleBufferTypeAudioApp sampleBuffer = CMSampleBuffer 0x100500c50 retainCount: 1 ...

  6. itest(爱测试)开源接口测试&敏捷测试&极简项目管理 6.6.6 发布,新增接口mock

    (一)itest 简介及更新说明 itest 开源敏捷测试管理,testOps 践行者,极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock 6合1,又有丰富的统计分析.可按测试包 ...

  7. 字符型 ASCLL编码 转义字符

    字符(character) char 2字节   每一个字符的背后.都有一个数字做代表(对照,参照的表) 字符赋值 char cl = 'a';通过''单引号描述为字符赋值 整数赋值 char c2 ...

  8. ctfshow-超详细通关教程-web(1~8)

    快捷目录 web1 web2 web3 web4 web5 web6 web7 web8 1.web签到题 打开网址后出现如下界面. 查看一下网站源码 将Y3Rmc2hvd3s1ZjkxNTc3Yy0 ...

  9. ZeroPadding 参照

    加密时要处理. 解密时,不需要额外处理,直接NoPadding. import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; impor ...

  10. vs 启动时报错:未能加载文件或程序集 SharpGit

    错误完整内容: ---------------------------Microsoft Visual Studio---------------------------System.Reflecti ...