[oeasy]python0018_ ASCII_字符分布_数字_大小写字母_符号_黑暗森林
打包和解包
回忆上次内容
- decode
- 就是解码
- 解码和编码可以转化
- encode 编码
- decode 解码
- 互为逆过程
- 大小写字母之间序号全都相差(
32)10进制
编辑
- 这是为什么呢?
差距
- 大写字母和小写字母
- 总是相差(
32)10进制
编辑
- 从10进制角度看不清楚
- 我们从16进制的角度看看
16进制
- 正好是(
0x20)16进制
编辑
- 为什么不多不少
- 就差 0x20 呢?
- 怎么那么寸呢?
- 转化为2进制之后
- 恰好是1位(bit)
- 这是偶然的吗?
ASCII 码表趣事
- 其实最初相差的并不是 0x20
- 之前 ibm 的 EBCDIC 编码也是这样的
正在上传…重新上传取消
- 也相差一个2进制位
编辑
- EBCDIC问题是字母不连续
- i、j之间不直接相连
- EBCDIC最终被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(空格)
- 表格最左边是什么呢?
ASCII
-
0x20-0x7F 之间有各种真实字符
编辑
0x00-0x1F 之间的东西是什么?
- 前两列都是对应多个字符的
- 具体含义目前还不知道
- ASCII中的字符本来英语里就有
- 但是字符是英文字符、数字和标点
- 怎么编码的呢?
ASCII由来
- ASCII码是由电报代码发展而来的
正在上传…重新上传取消
- 由贝尔数据服务公司推广
编辑
- 电报码不是摩斯电码吗?
摩斯电码
- 更早之前确实是摩斯电码
- 下图是他的编码表
- 分成长和短两种信号,就是嘀和嗒
编辑
- 《oeasy 教您玩转电路基础》第 18 话 里面有介绍
- 欢迎您有机会来看看oeasy电学、科学史那几个系列
- 还记得encode/decode中的code么?
- 曾经一度指的就是各种电报编码汇编
- 后来统一到摩斯电码
摩斯电码通信规则
- 下图是他的通信规则
- 三个断确认本字符结束了
- 三个断就是字符之间的分隔符
- 录入状态并不是 0、1 两种状态
- 而是长、短、暂停三种状态
编辑
- 编码的原则是什么呢?
效率问题
- 编码的规则是常用的字符点击次数少
- 按照字符出现概率分配对应点击数量
-
T、E 出现频率最高 - 所以用一次点击电键的数量
- 本质上是一棵霍夫曼树
编辑
- 当时发射和接收全靠人
- 什么叫长、什么叫短、什么叫断
- 发送者控制发报速度
- 接收者跟着这个发报速度
- 现查表是来不及的
- 需要熟悉
- 摩斯电码码表
- 常用缩写
- 这摩斯电码是3进制的编码方式
- 怎么变成ascii这种0101的二进制编码的呢?
总结
- ASCII 由这样几类字符构成
- 英文大写字符
- 英文小写字符
- 数字
- 符号
- 电报时代对于英文、数字的编码
- 使用的是摩斯电码
编辑
- 这摩斯电码是3进制的编码方式
- 长短空
- 怎么演化成ascii这种0101的二进制编码的呢?
- 下次再说
- 蓝桥->https://www.lanqiao.cn/teacher/3584
- github->https://github.com/overmind1980/oeasy-python-tutorial
- gitee->https://gitee.com/overmind1980/oeasypython
- 视频->https://www.bilibili.com/video/BV1CU4y1Z7gQ 作者:oeasy
[oeasy]python0018_ ASCII_字符分布_数字_大小写字母_符号_黑暗森林的更多相关文章
- 判断CString字符串中各位是数字,大小写字母,符号,汉字.xml
pre{ line-height:1; color:#1e1e1e; background-color:#e9e9ff; font-size:16px;}.sysFunc{color:#627cf6; ...
- validate插件:验证密码没有空格 用户名是5-10位 至少包含数字和大小写字母中的两种字符
//校验密码是否含有空格 jQuery.validator.addMethod("notblank", function(value, element) { var pwdblan ...
- 利用C语言识别用户输入字符并且输出该字符ASCII码值(大小写字母篇)(含思路)
要求:从键盘输入一个字符,如果输入字符的是小写英文字母,则将其转换为大写英文字母,然后将转换后的英文字母及其ASCII码值输出到屏幕上,如果输入的是其他字符,则不转换并且直接将它及其ASCII码值输出 ...
- javascript中怎样验证密码是否含有特殊符号、数字、大小写字母,长度是否大于6小于12
今天在温习了一下以前学过的知识,一般常用验证密码是通过正则表达式或是通过ASCII 一.用AscII码来验证
- PowerDesigner的CDM模型将低驼峰命名法则的每个大写字母前加_符
Option Explicit ValidationMode = True InteractiveMode = im_Batch Dim mdl '当前model '获取当前活 ...
- PHP中生成随机字符串,数字+大小写字母随机组合
简单的生成随机字符串: /* * 生成随机字符串 * * $length 字符串长度 */ function random_str($length) { // 密码字符集,可任意添加你需要的字符 $c ...
- https 单向双向认证说明_数字证书, 数字签名, SSL(TLS) , SASL_转
转自:https 单向双向认证说明_数字证书, 数字签名, SSL(TLS) , SASL 因为项目中要用到TLS + SASL 来做安全认证层. 所以看了一些网上的资料, 这里做一个总结. 1. 首 ...
- cb19a_c++_只适合string类型的操作_提取_追加_替换
*cb19a_c++_只适合string类型的操作_提取_追加_替换三个substr重载函数-获取一个字符串的一部分六个append重载函数-追加字符十个replace重载函数-替换更换 重载函数越多 ...
- HTML 限制文本框只能输入特定字符(比如数字 onkeyup+onafterpaste)
正则表达式1 <td><asp:TextBox ID="TextBox_username" Width="250" runat="s ...
- java画图程序_图片用字母画出来_源码发布_版本二
在上一个版本:java画图程序_图片用字母画出来_源码发布 基础上,增加了图片同比例缩放,使得大像素图片可以很好地显示画在Notepad++中. 项目结构: 运行效果1: 原图:http://imag ...
随机推荐
- 服务器root密码忘记,使用centos7 紧急模式修改root密码
一.实战场景 公司一台centos7服务器root密码忘记了,需要你修改root密码,找回root身份. 二.进入紧急模式修改root密码 首先重启服务器,看到这界面时选择第一项,按下e键进行编辑 2 ...
- mac for docker访问宿主机服务
转载链接 https://blog.csdn.net/weixin_33860528/article/details/91461648
- 内存取证——volatility学习
前言 在做计算机最后两道题目碰到了MP3格式的镜像,分析发现是计算机内存,要进行内存取证.现在内存取证在ctf比赛中也是常见的题目,内存取证是指在计算机系统的内存中进行取证分析,以获取有关计算机系统当 ...
- WPF如何自定义TabControl控件样式示例详解
一.前言 程序中经常会用到TabControl控件,默认的控件样式很普通.而且样式或功能不一定符合我们的要求.比如:我们需要TabControl的标题能够居中.或平均分布:或者我们希望TabContr ...
- windows server 2016 远程桌面连接,发生身份验证错误。 要求的函数不受支持
远程桌面连接,发生身份验证错误. 要求的函数不受支持 客户端:WIN7 服务端:windows server 2016 在被远程的机器上-远程设置中-取消"仅允许运行使用网络级别身份验证的远 ...
- jquery中$.get()提交和$.post()提交有区别吗?
相同点: 都是异步请求的方式来获取服务端的数据: 异同点: a.请求方式不同:$.get() 方法使用GET方法来进行异步请求的.$.post() 方法使用POST方法来进行异步请求的. b.参数传递 ...
- FreeRTOS简单内核实现3 任务管理
0.思考与回答 0.1.思考一 对于 Cotex-M4 内核的 MCU 在发生异常/中断时,哪些寄存器会自动入栈,哪些需要手动入栈? 会自动入栈的寄存器如下 R0 - R3:通用寄存器 R12:通用寄 ...
- C#如何创建一个可快速重复使用的项目模板
写在前面 其实很多公司或者资深的开发都有自己快速创建项目的脚手架的,有的是魔改代码生成器实现,有的直接基于T4,RazorEngine等模板引擎打造:但无论如何,其最终目的其实就是搭建一个自定义项目模 ...
- python中globals()的用法
python中globals()的用法 1. 获取所有的全局变量, 获取到的内容如下: {'__name__': '__main__', '__doc__': None, '__package__': ...
- Swoole v6 能否让 PHP 再次伟大?
大家好,我是码农先森. 现状 传统的 PHP-FPM 也是多进程模型的的运行方式,但每个进程只能处理完当前请求,才能接收下一个请求.而且对于 PHP 脚本来说,只是接收请求和响应请求,并不参与网络通信 ...