[oeasy]python0073_進(jìn)制轉(zhuǎn)化_eval_evaluate_衡量_oct_octal_八進(jìn)制

進(jìn)制轉(zhuǎn)化
回憶上次內(nèi)容
上次了解的是
整型數(shù)字類變量
integer
前綴為i

整型變量 和 字符串變量 不同
將 2進(jìn)制形式的 字符串
轉(zhuǎn)化為 十進(jìn)制整數(shù)
整型變量 是 直接存儲(chǔ)二進(jìn)制形式的
可以用 int()函數(shù)
int()
函數(shù)接受兩個(gè)變量
待轉(zhuǎn)化的字符串
字符串使用的進(jìn)制
二進(jìn)制 和 十進(jìn)制之間
bin(41)
int("101001",2)
把 10進(jìn)制整型數(shù)字 轉(zhuǎn)化為 2進(jìn)制字形式符串
把 2進(jìn)制形式字符串 轉(zhuǎn)化為 10進(jìn)制整型數(shù)字
可以互相轉(zhuǎn)化
除了 二進(jìn)制、 十進(jìn)制
怎么轉(zhuǎn)化呢???
還有什么樣的進(jìn)制來(lái)著?
更多進(jìn)制
(41)10進(jìn)制
可以轉(zhuǎn)化為 各種進(jìn)制形態(tài)的字符串
而且還能 轉(zhuǎn)化
回
來(lái)

函數(shù)名對(duì)應(yīng)單詞前綴binbinary前綴 0boctoctal前綴 0ohexhexadecimal前綴 0x
數(shù)字本質(zhì)
不論 用什么進(jìn)制形態(tài) 表示數(shù)字
本質(zhì)都一樣

類型 都是 整型
int 類型
具體數(shù)字都是 (41)10進(jìn)制
八進(jìn)制 十進(jìn)制

八進(jìn)制對(duì)應(yīng)單詞為oct

十六進(jìn)制 十進(jìn)制 轉(zhuǎn)化

hex 來(lái)自于 six

進(jìn)制總結(jié)
轉(zhuǎn)來(lái)轉(zhuǎn)去
其實(shí)萬(wàn)變不離其宗

函數(shù)名對(duì)應(yīng)單詞前綴binbinary前綴 0boctoctal前綴 0ointinteger無(wú)前綴hexhexadecimal前綴 0x
二進(jìn)制 八進(jìn)制 轉(zhuǎn)化
每一爻都分為陰爻陽(yáng)爻
三爻構(gòu)成八卦

3-bit二進(jìn)制數(shù)
對(duì)應(yīng)一個(gè) 八進(jìn)制數(shù)
河圖
河圖中三八為木數(shù)
同屬東方青龍木
屬生發(fā)之相
今天也用三八、八卦來(lái)形容普遍聯(lián)系性
畢竟三生萬(wàn)物

1
位8
進(jìn)制數(shù)對(duì)應(yīng)
3
位2
進(jìn)制數(shù)2
位8
進(jìn)制數(shù)對(duì)應(yīng)
6
位2
進(jìn)制數(shù)
二進(jìn)制 十六進(jìn)制 轉(zhuǎn)化
1
位8
進(jìn)制數(shù)對(duì)應(yīng)
3
位2
進(jìn)制數(shù)1
位16
進(jìn)制數(shù)對(duì)應(yīng)
4
位2
進(jìn)制數(shù)

2
位16
進(jìn)制數(shù)對(duì)應(yīng)
8
位2
進(jìn)制數(shù)正好一個(gè)字節(jié)
數(shù)字在內(nèi)存里面就
存在 這一個(gè)字節(jié) 里面么?
轉(zhuǎn)化為字節(jié)
int.bytes函數(shù)
可以將整型數(shù)字轉(zhuǎn)化為字節(jié)
函數(shù)有兩個(gè)參數(shù)
length
byteorder

length 決定將數(shù)字 轉(zhuǎn)化為
幾
個(gè)字節(jié)2 個(gè)字節(jié)可以容納 0-65535 個(gè)數(shù)字
41 可以存在 這個(gè)范圍內(nèi)
byteorder 字節(jié)順序
big 從左到右
little 從右到左
數(shù)字形態(tài)
整型數(shù)字變量 i_age
在存儲(chǔ)在兩個(gè)字節(jié)里面什么樣呢?
b'\x00'
是 一個(gè)字節(jié)全是0b')'
是多少呢?字節(jié)狀態(tài)是
b"\x00)"

)
對(duì)應(yīng)的字符的序號(hào)(ord) 的 16進(jìn)制形態(tài)是
0x29
也就是說
)
字符對(duì)應(yīng)字節(jié)狀態(tài)為
b'\x29'

兩個(gè)字節(jié)的int型變量
字節(jié)序列
b\x00\x29
也就是
b\x00)
反過來(lái)說
這兩個(gè)字節(jié)
存儲(chǔ)著數(shù)字41
這是數(shù)字形式
b"\x00\x29"
那 字符串形式41
是如何存儲(chǔ)的呢?
字符串形態(tài)
那字符串形態(tài)的變量
"41"
是什么樣子來(lái)著
字符串
就是字符的串
這個(gè)字符串 只有兩個(gè)字符
好像一個(gè)大腰子

字節(jié)狀態(tài)如何呢?
具體形態(tài)
"41"是一個(gè)字符串
里面有兩個(gè)字符
每一個(gè)字符對(duì)應(yīng)一個(gè)字節(jié)

第一個(gè)字符是 4
對(duì)應(yīng)十六進(jìn)制數(shù) 0x34
第二個(gè)字符是 1
對(duì)應(yīng)十六進(jìn)制數(shù) 0x31

具體字符

內(nèi)存里面就是這兩個(gè)字節(jié)
b"\x34\x31"
b 的意思是 bytes(字節(jié)序列)
ascii中觀察
"x34" 是第一個(gè)字節(jié)
x指的是十六進(jìn)制hexidecimal
(34)16對(duì)應(yīng)著字符
4
"x31" 是第二個(gè)字節(jié)
x指的是十六進(jìn)制hexidecimal
(31)16對(duì)應(yīng)著字符
1

整型數(shù)字和字符串
i_age
和s_age
對(duì)比
i_age
s_age
41"41"整型數(shù)字字符串b"\x00\x29"b"\x34\x31"
他們之間可以相 互轉(zhuǎn)化嗎?
整型數(shù)字和字符串的 轉(zhuǎn)化
字符串轉(zhuǎn)化為整型數(shù)字

整型數(shù)字轉(zhuǎn)化為字符串
類型轉(zhuǎn)化
練了無(wú)數(shù)次
都練出繭子了
這次來(lái)個(gè)新方法
新辦法
不論什么形式的字符串
都可以用 eval()函數(shù)衡量出來(lái)
evaluate 衡量
0b 前綴 二進(jìn)制
0o 前綴 八進(jìn)制
0x 前綴 十六進(jìn)制
不光如此
eval 還可以計(jì)算
eval
eval 可以計(jì)算
甚至可以計(jì)算函數(shù)
這能解決
字符串"3.3"
不能扮演(cast)整型數(shù)字的問題嗎?
什么是cast來(lái)著?
cast
cast原意是投擲
就會(huì)形成手影
cast a shadow 光投擲到手上
扮演成
成為鹿 或者 狼
手經(jīng)過 cast
后來(lái)代指
人扮演成其他的角色
字符串"3.3"
能扮演整數(shù)嗎?
間接扮演
直接扮演不行
先衡量(evaluate)出字符串的值
得到(浮點(diǎn)型小數(shù))
再讓得到的浮點(diǎn)型小數(shù)
扮演(cast)一個(gè)整數(shù)(int)
先扮演孫悟空
再扮演孫悟空變的 土地廟
總結(jié)
這次 總結(jié)了
四種進(jìn)制的轉(zhuǎn)化函數(shù)
計(jì)算字符串值的函數(shù)eval
數(shù)字41 和 字符串"41" 的不同
函數(shù)名前綴目標(biāo)字符串所用進(jìn)制bin0b二進(jìn)制oct0o八進(jìn)制hex0x十六進(jìn)制eval無(wú)前綴十進(jìn)制
字符串"41"
兩個(gè)字符
字符轉(zhuǎn)化為 ascii 序號(hào)
b"\x34\x31"
數(shù)字 41
轉(zhuǎn)化為 二進(jìn)制 0b101001
兩個(gè)字節(jié)前面補(bǔ)零
b"\x00\x29"
這就兩個(gè)字節(jié)
但是這兩個(gè)字節(jié)在存儲(chǔ)的時(shí)候
有先后次序嗎???
下次再說??
藍(lán)橋->https://www.lanqiao.cn/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython