ASCII 碼表
回憶上次内容
- ord(c)和chr(i)
- 這是倆函數
- 這倆函數是一對,相反相成的⚖️
- ord 通過 字元 找到對應的 數字
- chr 通過 數字 找到對應的 字元
- 字元 的本質是 數字
- 字元都對應着一些數字
- 都連号好像應該是天經地義的?
- 為什麼小寫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個
- 對應數字也是挨着的
「oeasy」python0013_ASCII碼表_英文字元編碼_鍵盤字元 編碼規律
- 從 a-z 應該都是挨着的
- 為什麼是從 97 開始?
- 低頭看一下鍵盤
「oeasy」python0013_ASCII碼表_英文字元編碼_鍵盤字元 字元全排列
- 每一個字元都會對應一個序号
- 序号用二進制的方式存在位元組(byte)中
- 一個位元組(byte)總有8位(bit)
- 每一位(bit)是一個二進制(binary)數字(digit)
「oeasy」python0013_ASCII碼表_英文字元編碼_鍵盤字元
「oeasy」python0013_ASCII碼表_英文字元編碼_鍵盤字元 周遊範圍
for i in range(2 ** 8):
print(i,end=",")
「oeasy」python0013_ASCII碼表_英文字元編碼_鍵盤字元
「oeasy」python0013_ASCII碼表_英文字元編碼_鍵盤字元 對應的字元
for n in range(255):
print(chr(n),end="")
if n % 16 == 0:
print()
- print(chr(n),end="")
- if n % 16 == 0:
「oeasy」python0013_ASCII碼表_英文字元編碼_鍵盤字元 結果
「oeasy」python0013_ASCII碼表_英文字元編碼_鍵盤字元 - 字母和數字還是挺完整的
- 這套對應關系有沒有個名字呢?
ASCII 碼表
- 當時美國的工程師定義了一套編碼規則
- ASCII
- American Standard Code for Information Interchange
- 美國資訊交換标準代碼
「oeasy」python0013_ASCII碼表_英文字元編碼_鍵盤字元 - 這建立起了 字元 和 二進制01 的 映射關系
- 字元 和 二進制數 的 映射關系 如果不一緻
- 面對同一個二進制數 01010101
- 就會映射到不同的字元
- 人們看到不同的字元就認為是亂碼
- 這套ascii标準在各種計算機系統中需要統一
- 否則無法通信
- 這個 ASCII 什麼時候開始有的呢?
初現
- 1967 年的時候就有了最初這個 ASCII 碼表
- 當時計算機
- 低電平表示 0
- 高電平表示 1
- 電子計算機中所有的資料都是 0 和 1
「oeasy」python0013_ASCII碼表_英文字元編碼_鍵盤字元 - 先是由美國國家标準學會制定
- (American National Standard Institute , ANSI )
- 最初是美國的國家标準
- 被稱作美國資訊交換标準代碼
- 美國之外的國家如何編碼基本字元呢?
國際化
- 後來是國際标準化組織定為國際标準ISO
- International Organization for Standardization a.k.a. ISO
- 稱為 ISO 646 标準
「oeasy」python0013_ASCII碼表_英文字元編碼_鍵盤字元 - 最後一次更新則是在 1986 年
- 能否完整系統地看到整個ascii碼表的對應關系呢?
ascii
sudo apt install ascii
「oeasy」python0013_ASCII碼表_英文字元編碼_鍵盤字元 使用ascii
- 每一字元有三個部分組成
- Dec 對應的是 10 進制數
- Hex 對應的是 16 進制數
- 最後一列 對應的是 具體字元或功能
「oeasy」python0013_ASCII碼表_英文字元編碼_鍵盤字元 - 字元包括
- 這樣就把各種字元和一個二進制數字對應起來了
解碼 ASCII
- 我們找到小寫的a
- 這個小寫的 a 在電腦中存儲的時候
- 對應着一個位元組
- 到底是多少呢?
- 先沿着下圖中1的方向
「oeasy」python0013_ASCII碼表_英文字元編碼_鍵盤字元 總結
- 這次我們了解了ASCII碼表
- ASCII 碼表就是
- American Standard Code for Information Interchange
- 美國資訊交換标準代碼
- ASCII 碼表範圍
- 0x30-0x39 這個範圍是 數字
- 0x41-0x5A 這個範圍是 大 寫字母
- 0x61-0x7A 這個範圍是 小 寫字母
- 0x20-0x7F 之間各處零散排布着各種符号
「oeasy」python0013_ASCII碼表_英文字元編碼_鍵盤字元 - 字元在計算機當中是用二進制方式存儲的
- 我們現在可以得到字元的序号
- 但是能通過字元序号
- 得到字元的二進制形态麼?
- 我們下次再說
- 藍橋->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