[oeasy]python0018_ ASCII_字符分布_数字_大小写字母_符号_黑暗森林

简介: [oeasy]python0018_ ASCII_字符分布_数字_大小写字母_符号_黑暗森林

 

打包和解包

回忆上次内容

    • decode

     

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

            image.gif编辑

              • 这是为什么呢?🤔

              差距

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

                  image.gif编辑

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

                    16进制

                      • 正好是(0x20)16进制

                      image.gif编辑

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

                                ASCII 码表趣事

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

                                    正在上传…重新上传取消

                                      • 也相差一个2进制位

                                      image.gif编辑

                                        • EBCDIC问题是字母不连续
                                          • i、j之间不直接相连
                                            • EBCDIC最终被ascii所淘汰

                                            ASCII

                                              • ASCII字母是连续的
                                                • 而且大小写字母间
                                                • 相差正好是 1个 二进制位
                                                • 对应 b6 这个位
                                                  • 那为什么要差 1个 二进制位 呢?

                                                  image.gif编辑

                                                    • 有了这种对应关系之后
                                                      • 做大小写不敏感的字符串查找就快多了
                                                      • 这个 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 码表范围

                                                                            image.gif编辑

                                                                              • 0x30-0x39这个范围是数字
                                                                                • 数字的编码减去0x30正好得到数字本身
                                                                                • 后四位刚好是BCD编码模式
                                                                                  • Binary-Coded Decimal

                                                                                  image.gif编辑

                                                                                    • 我们再来看看 ASCII 除了字母和数字还有什么?

                                                                                    各种符号

                                                                                      • 各种符号是不连续的

                                                                                      image.gif编辑

                                                                                        • 穿插在数字、字母周围
                                                                                          • sp 其实就是space(空格)
                                                                                            • 表格最左边是什么呢?

                                                                                            ASCII

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

                                                                                              image.gif编辑

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

                                                                                                          ASCII由来

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

                                                                                                            正在上传…重新上传取消

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

                                                                                                              image.gif编辑

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

                                                                                                                摩斯电码

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

                                                                                                                    image.gif编辑

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

                                                                                                                            摩斯电码通信规则

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

                                                                                                                                image.gif编辑

                                                                                                                                  • 编码的原则是什么呢?

                                                                                                                                  效率问题

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

                                                                                                                                          image.gif编辑

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

                                                                                                                                                      总结

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

                                                                                                                                                              image.gif编辑

                                                                                                                                                                • 这摩斯电码是3进制的编码方式
                                                                                                                                                                  • 长短空
                                                                                                                                                                    相关文章
                                                                                                                                                                    |
                                                                                                                                                                    2月前
                                                                                                                                                                    |
                                                                                                                                                                    程序员 开发工具 Python
                                                                                                                                                                    [oeasy]python017_万行代码之梦_vim环境_复制粘贴
                                                                                                                                                                    在这个教程中,作者分享了如何在 Vim 编辑器中快速创建和操作大量代码行。首先,通过 `yy` 复制一行,然后使用 `p` 粘贴来增加代码行数。通过反复粘贴,可以迅速生成多行代码。为了加快操作,可以用 `9999p` 来一次性粘贴9999行。接着,介绍了撤销(`u`)和重做(`ctrl+r`)的操作,以及删除整篇文档的快捷方式。最后,作者提到虽然可以生成一万行代码,但并不建议这样做,因为可能会导致程序崩溃,并提醒大家适度编程。
                                                                                                                                                                    65 2
                                                                                                                                                                    |
                                                                                                                                                                    2月前
                                                                                                                                                                    |
                                                                                                                                                                    机器学习/深度学习 Python 算法
                                                                                                                                                                    最新【Python 百练成钢】时间调整、二进制数、回文素数、字母距离(1),2024年最新2024年阿里Python岗面试必问
                                                                                                                                                                    最新【Python 百练成钢】时间调整、二进制数、回文素数、字母距离(1),2024年最新2024年阿里Python岗面试必问
                                                                                                                                                                    最新【Python 百练成钢】时间调整、二进制数、回文素数、字母距离(1),2024年最新2024年阿里Python岗面试必问
                                                                                                                                                                    |
                                                                                                                                                                    2月前
                                                                                                                                                                    |
                                                                                                                                                                    JavaScript IDE 开发工具
                                                                                                                                                                    python中的SyntaxError: invalid character in identifier(语法错误:标识符中有无效字符)
                                                                                                                                                                    【5月更文挑战第14天】python中的SyntaxError: invalid character in identifier(语法错误:标识符中有无效字符)
                                                                                                                                                                    99 8
                                                                                                                                                                    |
                                                                                                                                                                    13天前
                                                                                                                                                                    |
                                                                                                                                                                    数据采集 开发者 Python
                                                                                                                                                                    在Python中判断字符串中是否包含字母
                                                                                                                                                                    在Python中判断字符串中是否包含字母
                                                                                                                                                                    24 4
                                                                                                                                                                    Python----统计字符串中的英文字母、空格、数字和其它字符的个数。
                                                                                                                                                                    Python----统计字符串中的英文字母、空格、数字和其它字符的个数。
                                                                                                                                                                    |
                                                                                                                                                                    27天前
                                                                                                                                                                    |
                                                                                                                                                                    存储 算法 安全
                                                                                                                                                                    LeetCode 题目 49:字母异位词分组 5种算法实现与典型应用案例【python】
                                                                                                                                                                    LeetCode 题目 49:字母异位词分组 5种算法实现与典型应用案例【python】
                                                                                                                                                                    |
                                                                                                                                                                    2月前
                                                                                                                                                                    |
                                                                                                                                                                    数据安全/隐私保护 开发者 Python
                                                                                                                                                                    【Python 基础】检查字符串是否只包含数字和字母?
                                                                                                                                                                    【5月更文挑战第8天】【Python 基础】检查字符串是否只包含数字和字母?
                                                                                                                                                                    |
                                                                                                                                                                    20天前
                                                                                                                                                                    |
                                                                                                                                                                    开发工具 Python
                                                                                                                                                                    [oeasy]python0021_宝剑镶宝石_爱之石中剑_批量替换_特殊字符_特殊颜色
                                                                                                                                                                    在这个文本中,作者描述了一个逐步修改Python游戏`game.py`的过程,以将小丑的眼睛和石中剑的图形替换为爱心符号,并且将其颜色更改为红色。以下是内容的摘要: - 用户回顾了之前对`game.py`的分析和理解。 - 通过使用方向键和编辑模式,在代码中找到了小丑眼睛和石中剑的位置,用爱心符号(❤)替换了它们。 - 如果遇到问题,建议使用最新版的火狐浏览器进行粘贴操作。 - 使用Vim编辑器的命令模式批量替换了剑柄上的数字8为爱心,使整个剑柄充满了爱心。 - 通过插入特定代码,将爱心变为红色,从而得到红色的“爱之大剑”。
                                                                                                                                                                    17 0
                                                                                                                                                                    |
                                                                                                                                                                    2月前
                                                                                                                                                                    |
                                                                                                                                                                    Python
                                                                                                                                                                    【Python 基础】如何将一个字符串转化为全大写和全小写?
                                                                                                                                                                    【5月更文挑战第8天】【Python 基础】如何将一个字符串转化为全大写和全小写?
                                                                                                                                                                    |
                                                                                                                                                                    2月前
                                                                                                                                                                    |
                                                                                                                                                                    人工智能 Linux 开发工具
                                                                                                                                                                    [oeasy]python018_ 如何下载github仓库_git_clone_下载仓库
                                                                                                                                                                    在这个文档中,作者讨论了如何继续进行编程学习,特别是关于GitHub的使用。首先,回顾了从编写简单代码到管理大量代码的过程。然后,提到了通过“保存运行一条龙”操作来处理代码,以及GitHub作为全球最大的开源软件平台的重要性。在GitHub上,用户可以找到各种软件项目,包括Linux、Python和Blender等。 作者解释了GitHub的基本操作,如点赞(star)、 fork(复制项目)和watch(关注项目更新)。还介绍了如何下载项目到本地,通过`git clone`命令复制仓库的URL并将其粘贴到终端进行下载。如果遇到问题,可以尝试更换HTTP链接或等待一段时间重试。
                                                                                                                                                                    201 2