[oeasy]python0073_进制转化_eval_evaluate_衡量_oct_octal_八进制

进制转化
回忆上次内容
上次了解的是
整型数字类变量
integer
前缀为i

整型变量 和 字符串变量 不同
将 2进制形式的 字符串
转化为 十进制整数
整型变量 是 直接存储二进制形式的
可以用 int()函数
int()
函数接受两个变量
待转化的字符串
字符串使用的进制
二进制 和 十进制之间
bin(41)
int("101001",2)
把 10进制整型数字 转化为 2进制字形式符串
把 2进制形式字符串 转化为 10进制整型数字
可以互相转化
除了 二进制、 十进制
怎么转化呢?🤔
还有什么样的进制来着?
更多进制
(41)10进制
可以转化为 各种进制形态的字符串
而且还能 转化
回
来

函数名对应单词前缀binbinary前缀 0boctoctal前缀 0ohexhexadecimal前缀 0x
数字本质
不论 用什么进制形态 表示数字
本质都一样

类型 都是 整型
int 类型
具体数字都是 (41)10进制
八进制 十进制

八进制对应单词为oct

十六进制 十进制 转化

hex 来自于 six

进制总结
转来转去
其实万变不离其宗

函数名对应单词前缀binbinary前缀 0boctoctal前缀 0ointinteger无前缀hexhexadecimal前缀 0x
二进制 八进制 转化
每一爻都分为阴爻阳爻
三爻构成八卦

3-bit二进制数
对应一个 八进制数
河图
河图中三八为木数
同属东方青龙木
属生发之相
今天也用三八、八卦来形容普遍联系性
毕竟三生万物

1
位8
进制数对应
3
位2
进制数2
位8
进制数对应
6
位2
进制数
二进制 十六进制 转化
1
位8
进制数对应
3
位2
进制数1
位16
进制数对应
4
位2
进制数

2
位16
进制数对应
8
位2
进制数正好一个字节
数字在内存里面就
存在 这一个字节 里面么?
转化为字节
int.bytes函数
可以将整型数字转化为字节
函数有两个参数
length
byteorder

length 决定将数字 转化为
几
个字节2 个字节可以容纳 0-65535 个数字
41 可以存在 这个范围内
byteorder 字节顺序
big 从左到右
little 从右到左
数字形态
整型数字变量 i_age
在存储在两个字节里面什么样呢?
b'\x00'
是 一个字节全是0b')'
是多少呢?字节状态是
b"\x00)"

)
对应的字符的序号(ord) 的 16进制形态是
0x29
也就是说
)
字符对应字节状态为
b'\x29'

两个字节的int型变量
字节序列
b\x00\x29
也就是
b\x00)
反过来说
这两个字节
存储着数字41
这是数字形式
b"\x00\x29"
那 字符串形式41
是如何存储的呢?
字符串形态
那字符串形态的变量
"41"
是什么样子来着
字符串
就是字符的串
这个字符串 只有两个字符
好像一个大腰子

字节状态如何呢?
具体形态
"41"是一个字符串
里面有两个字符
每一个字符对应一个字节

第一个字符是 4
对应十六进制数 0x34
第二个字符是 1
对应十六进制数 0x31

具体字符

内存里面就是这两个字节
b"\x34\x31"
b 的意思是 bytes(字节序列)
ascii中观察
"x34" 是第一个字节
x指的是十六进制hexidecimal
(34)16对应着字符
4
"x31" 是第二个字节
x指的是十六进制hexidecimal
(31)16对应着字符
1

整型数字和字符串
i_age
和s_age
对比
i_age
s_age
41"41"整型数字字符串b"\x00\x29"b"\x34\x31"
他们之间可以相 互转化吗?
整型数字和字符串的 转化
字符串转化为整型数字

整型数字转化为字符串
类型转化
练了无数次
都练出茧子了
这次来个新方法
新办法
不论什么形式的字符串
都可以用 eval()函数衡量出来
evaluate 衡量
0b 前缀 二进制
0o 前缀 八进制
0x 前缀 十六进制
不光如此
eval 还可以计算
eval
eval 可以计算
甚至可以计算函数
这能解决
字符串"3.3"
不能扮演(cast)整型数字的问题吗?
什么是cast来着?
cast
cast原意是投掷
就会形成手影
cast a shadow 光投掷到手上
扮演成
成为鹿 或者 狼
手经过 cast
后来代指
人扮演成其他的角色
字符串"3.3"
能扮演整数吗?
间接扮演
直接扮演不行
先衡量(evaluate)出字符串的值
得到(浮点型小数)
再让得到的浮点型小数
扮演(cast)一个整数(int)
先扮演孙悟空
再扮演孙悟空变的 土地庙
总结
这次 总结了
四种进制的转化函数
计算字符串值的函数eval
数字41 和 字符串"41" 的不同
函数名前缀目标字符串所用进制bin0b二进制oct0o八进制hex0x十六进制eval无前缀十进制
字符串"41"
两个字符
字符转化为 ascii 序号
b"\x34\x31"
数字 41
转化为 二进制 0b101001
两个字节前面补零
b"\x00\x29"
这就两个字节
但是这两个字节在存储的时候
有先后次序吗?🤔
下次再说👋
蓝桥->https://www.lanqiao.cn/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython