[oeasy]python0013_ASCII码表_英文字符编码_键盘字符

简介: [oeasy]python0013_ASCII码表_英文字符编码_键盘字符

 

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个🔢
                    • 对应数字也是挨着的

                    image.gif编辑

                    编码规律

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

                              image.gif编辑

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

                                    字符全排列

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

                                        image.gif编辑

                                          • 8个08个1 相当于
                                            • 0255

                                            image.gif编辑

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

                                                遍历范围

                                                for i in range(2 ** 8):

                                                   print(i,end=",")

                                                  • 遍历范围是[0, 28)
                                                    • 也就是[0, 256)
                                                    • 前闭后开
                                                    • 不包含256

                                                    image.gif编辑

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

                                                      image.gif编辑

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

                                                        对应的字符

                                                          • 通过数字找到对应的字符是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整除
                                                                        • 那么输出换行

                                                                        image.gif编辑

                                                                          • 结果如何呢?

                                                                          结果

                                                                          image.gif编辑

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

                                                                            ASCII 码表

                                                                              • 当时美国的工程师定义了一套编码规则
                                                                                • ASCII
                                                                                  • American Standard Code for Information Interchange
                                                                                    • 美国信息交换标准代码

                                                                                    image.gif编辑

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

                                                                                            初现

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

                                                                                                  image.gif编辑

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

                                                                                                        国际化

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

                                                                                                            image.gif编辑

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

                                                                                                                  ascii

                                                                                                                    • 我们先来下个ascii程序

                                                                                                                    sudo apt install ascii

                                                                                                                      • 上面的命令可以安装ascii这个应用

                                                                                                                      image.gif编辑

                                                                                                                      使用ascii

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

                                                                                                                          image.gif编辑

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

                                                                                                                                解码 ASCII

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

                                                                                                                                          image.gif编辑

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

                                                                                                                                              总结

                                                                                                                                                • 这次我们了解了ASCII码表
                                                                                                                                                  • ASCII 码表就是
                                                                                                                                                    • American Standard Code for Information Interchange
                                                                                                                                                      • 美国信息交换标准代码
                                                                                                                                                        • ASCII 码表范围
                                                                                                                                                          • 0x30-0x39 这个范围是 数字
                                                                                                                                                            • 数字的编码减去 0x30 正好得到数字本身
                                                                                                                                                              • 0x41-0x5A 这个范围是 写字母
                                                                                                                                                              • 0x61-0x7A 这个范围是 写字母
                                                                                                                                                              • 0x20-0x7F 之间各处零散排布着各种符号

                                                                                                                                                              image.gif编辑

                                                                                                                                                                相关文章
                                                                                                                                                                |
                                                                                                                                                                1月前
                                                                                                                                                                |
                                                                                                                                                                算法 前端开发 数据处理
                                                                                                                                                                小白学python-深入解析一位字符判定算法
                                                                                                                                                                小白学python-深入解析一位字符判定算法
                                                                                                                                                                48 0
                                                                                                                                                                |
                                                                                                                                                                11天前
                                                                                                                                                                |
                                                                                                                                                                人工智能 Shell 开发工具
                                                                                                                                                                [oeasy]python0041_输出ASCII码表_英文字符编码_键盘字符_ISO_646
                                                                                                                                                                本文介绍了ASCII码表的生成与使用,包括英文字符、数字和符号的编码。通过Python代码遍历0到127的ASCII值,解决了找不到竖线符号的问题,并解释了ASCII码的固定映射关系及其重要性。文章还介绍了ASCII码的历史背景,以及它如何成为国际标准ISO 646。最后,通过安装`ascii`程序展示了完整的ASCII码表。
                                                                                                                                                                12 1
                                                                                                                                                                |
                                                                                                                                                                22天前
                                                                                                                                                                |
                                                                                                                                                                人工智能 Python
                                                                                                                                                                [oeasy]python039_for循环_循环遍历_循环变量
                                                                                                                                                                本文回顾了上一次的内容,介绍了小写和大写字母的序号范围,并通过 `range` 函数生成了 `for` 循环。重点讲解了 `range(start, stop)` 的使用方法,解释了为什么不会输出 `stop` 值,并通过示例展示了如何遍历小写和大写字母的序号。最后总结了 `range` 函数的结构和 `for` 循环的使用技巧。
                                                                                                                                                                31 4
                                                                                                                                                                |
                                                                                                                                                                29天前
                                                                                                                                                                |
                                                                                                                                                                存储 Python
                                                                                                                                                                [oeasy]python038_ range函数_大小写字母的起止范围_start_stop
                                                                                                                                                                本文介绍了Python中`range`函数的使用方法及其在生成大小写字母序号范围时的应用。通过示例展示了如何利用`range`和`for`循环输出指定范围内的数字,重点讲解了小写和大写字母对应的ASCII码值范围,并解释了`range`函数的参数(start, stop)以及为何不包括stop值的原因。最后,文章留下了关于为何`range`不包含stop值的问题,留待下一次讨论。
                                                                                                                                                                21 1
                                                                                                                                                                |
                                                                                                                                                                15天前
                                                                                                                                                                |
                                                                                                                                                                人工智能 开发工具 Python
                                                                                                                                                                [oeasy]python040_缩进几个字符好_输出所有键盘字符_循环遍历_indent
                                                                                                                                                                本文探讨了Python代码中的缩进问题。通过研究`range`函数和`for`循环,发现缩进对于代码块的执行至关重要。如果缩进不正确,程序会抛出`IndentationError`。文章还介绍了Python的PEP8规范,推荐使用4个空格进行缩进,并通过示例展示了如何使用Tab键实现标准缩进。最后,通过修改代码,输出了从0到122的字符及其对应的ASCII码值,但未能找到竖线符号(`|`)。文章在总结中提到,下次将继续探讨竖线符号的位置。
                                                                                                                                                                12 0
                                                                                                                                                                |
                                                                                                                                                                1月前
                                                                                                                                                                |
                                                                                                                                                                存储 C++ Python
                                                                                                                                                                [oeasy]python037_ print函数参数_sep分隔符_separator
                                                                                                                                                                本文介绍了Python中`print`函数的`sep`参数,即分隔符。通过回顾上文内容,解释了类型与`type`的概念,并强调了参数类型的重要性。文章详细探讨了`print`函数如何使用`sep`参数来分隔输出值,默认分隔符为空格(序号32)。还讨论了如何修改分隔符为其他字符,如冒号,并解释了为何反斜杠需要使用双反斜杠表示。最后,文章追溯了`sep`名称的由来,以及相关词汇的历史背景,如盎格鲁-萨克逊人的武器和语言。
                                                                                                                                                                35 0
                                                                                                                                                                |
                                                                                                                                                                8天前
                                                                                                                                                                |
                                                                                                                                                                机器学习/深度学习 人工智能 TensorFlow
                                                                                                                                                                人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
                                                                                                                                                                【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
                                                                                                                                                                |
                                                                                                                                                                8天前
                                                                                                                                                                |
                                                                                                                                                                机器学习/深度学习 数据挖掘 Python
                                                                                                                                                                Python编程入门——从零开始构建你的第一个程序
                                                                                                                                                                【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
                                                                                                                                                                下一篇
                                                                                                                                                                无影云桌面