[oeasy]python0016_編碼_encode_編號(hào)_字節(jié)_計(jì)算機(jī)
編碼(encode)
回憶上次內(nèi)容
上次找到了字符和字節(jié)狀態(tài)之間的映射對(duì)應(yīng)關(guān)系
字符對(duì)應(yīng)著二進(jìn)制字節(jié)
二進(jìn)制字節(jié)也對(duì)應(yīng)著字符
這種字節(jié)狀態(tài)是用2位16進(jìn)制數(shù)來(lái)表示的
hex(n)可以把數(shù)字轉(zhuǎn)化為
16進(jìn)制
字符串
hexadecimal
bin(n)可以把數(shù)字轉(zhuǎn)化為
2進(jìn)制
字符串
integer
我們根據(jù)ascii中的字符序號(hào)
能夠把字符存儲(chǔ)進(jìn)計(jì)算機(jī)的字節(jié)當(dāng)中了

終于知道字符對(duì)應(yīng)的字節(jié)到底長(zhǎng)啥樣了
但是說到底
為啥要把字符對(duì)應(yīng)成字節(jié)呢???
編碼解碼
字符和字節(jié)之間的關(guān)系其實(shí)是
編碼 encode
解碼 decode

編碼encode
就是將文字、數(shù)字、其它對(duì)象編成數(shù)字(字節(jié)形態(tài))
簡(jiǎn)單來(lái)說就是給大白菜編個(gè)號(hào)
用計(jì)算機(jī)統(tǒng)計(jì)考勤
實(shí)到情況千差萬(wàn)別

怎么編碼呢?
計(jì)算機(jī)視角

情況
編碼
到了
1
沒到
0
這里只用了一個(gè)二進(jìn)制位
這其實(shí)是一個(gè)一劃開天的過程
分陰陽(yáng)
世界本是混沌一片

后來(lái)我們有了分別心

于是區(qū)分出了兩種基本特性
陰
陽(yáng)
但是刻板的非黑即白是危險(xiǎn)的
二生三
陰和陽(yáng)相互斗爭(zhēng)、妥協(xié)、轉(zhuǎn)化

陰陽(yáng)互根
產(chǎn)生了灰
由于黑白比例不同
灰也可以千變?nèi)f化
所以也說三生萬(wàn)物
可計(jì)算機(jī)中如何進(jìn)一步量化呢?
量化


這次用了兩個(gè)二進(jìn)制位
于是有了四種可能性
2bit編碼
情況
編碼
到了
11
遲到
10
因故沒到
01
無(wú)故沒到
00

我們古人的編碼要比這經(jīng)典得多
四象
兩儀生四象
這抽象程度非常高

春夏秋冬
子午卯酉
元亨利貞
成住壞空
乾坤離坎
天地日月
東南西北
生長(zhǎng)收藏
還可以進(jìn)一步細(xì)化嗎?
繼續(xù)細(xì)化
情況
編碼
到了
111
病假
110
事假
101
遲到10分鐘
100
遲到30分鐘
011
遲到50分鐘
010
因故沒到
001
無(wú)故沒到
000
這也只用了3個(gè)二進(jìn)制位(bit)

這其實(shí)也是一個(gè)經(jīng)典的編碼
四象生八卦
卦者,掛也。懸索以示人。
3bit可以形成八卦

計(jì)算機(jī)最小的存儲(chǔ)單位是字節(jié)(byte)
一個(gè)字節(jié)(byte)有8位(bit)

可以存放下255種貨物的可能
如果有更多的貨物應(yīng)該怎么辦呢?
更多編碼
編碼可以超過一個(gè)字節(jié)

需要稱重的
每個(gè)都有編碼

編碼編碼
具體來(lái)說什么是編呢?
就是建立起事物和數(shù)字之間的關(guān)系就是編
什么是碼呢?
碼(code)
有各種碼
條碼、二維碼、密電碼
砝碼、優(yōu)惠碼、驗(yàn)證碼
代碼、字節(jié)碼、邀請(qǐng)碼
code
來(lái)自于法語(yǔ)

早年間是木板子的判例匯編
后來(lái)在電報(bào)年代匯編電報(bào)碼

計(jì)算機(jī)編碼
我們編程其實(shí)就是把生活中的各種邏輯
對(duì)應(yīng)成計(jì)算機(jī)中的各種指令代碼

這就是編程
也叫寫代碼
代的意思是指代、代替
碼是數(shù)碼
he is coding...

明白了碼(code)
那么這個(gè)編碼(encode)是什么意思呢?
help(str.encode)help("a".encode)
encode
encode
放在前面
放在后面
前后都放
enlarge
endanger
ensure
encourage
golden
wooden
woollen
darken
使心靈亮起來(lái)
山水蒙? 開蒙 啟蒙
enlighten 啟蒙
en的意思是使東西成為什么樣子
這是 編碼英文 encode 的意思
可以試試用python編碼嗎?
python編解碼

這很簡(jiǎn)單啊
str(字符串)
'a'
encode(編碼)之后為
b'\x61'
b 的意思是bytes(字節(jié)序列)
x 的意思是 hexadecimal(十六進(jìn)制)

這個(gè)encode和hex有點(diǎn)像呢?
多個(gè)字符
想查詢encode的幫助

先判斷類型
查詢幫助

可以把多字符的字符串編碼為字節(jié)嗎?
多字符編碼

確實(shí)可以多字符編碼

確實(shí)是ascii編碼
這有點(diǎn)像hex函數(shù)...
hex
查詢幫助

hex可以把任意的數(shù)字變成十六進(jìn)制字符串形式
如果數(shù)字小于255
確實(shí)可以轉(zhuǎn)化成2位16進(jìn)制的形態(tài)
但是類型不是字節(jié)
而是十六進(jìn)制的字符串形態(tài)

encode的結(jié)果是
字節(jié)類型
兩者有關(guān)聯(lián)嗎?
關(guān)聯(lián)
兩者確實(shí)是有關(guān)聯(lián)的
字符序號(hào)的十六進(jìn)制形態(tài)恰好就是
字符在字節(jié)中存儲(chǔ)的樣子

"a"字符的序號(hào)的十六進(jìn)制形態(tài)是0x61
"a"編碼到計(jì)算機(jī)中的字節(jié)狀態(tài)是b"\x61"
兩者都是61
總結(jié)
code就是碼
最早也指電報(bào)碼
后來(lái)有各種編碼、密碼、砝碼、條碼
都指的是把各種事物編個(gè)號(hào)
encode就是編碼
編碼就是給事物編個(gè)號(hào)

編碼基本了解了
給事物編號(hào)就是編碼
怎么通過編號(hào)找回原來(lái)的事物呢???
我們下次再說????
藍(lán)橋->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