欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

类型转换

程序员文章站 2022-03-14 15:57:44
...

类型转换

原来学过:
int(1)
float(‘1.5’)
str(‘1’)
type()
isinstance()

数字进制转换

1.十进制转二进制:bin() binary int()
bin()十进制转二进制,int()二进制转十进制

bin(228)   →  '0b11100100'   
bin(1000)  →  '0b1111101000'
int(0b11100100)  →   228     
int(0xe4)  →  228
228 = 0b11100100 = 0xe4
为了区分普通的十进制,二进制数字特殊前缀0b。

2.十六进制(hexadecimal
)、十进制互转 hex()
hex()十进制转十六进制,int()十六进制转十进制

hex(228)  →   0xe4
int(0xe4)  →  228
int(0b11100100)  →  228
十六进制数字特殊前缀0x

3.前缀

b前缀。如:b'\xe4'
u前缀:如:a=u'小明',u代表Unicode编码,python2中常见,显示告诉程序后面的中文字符用Unicode编码,python3默认Unicode编码,所以不用写。
示例\u0x3e\u0x12,中间产物,被utf8存储后才会形成字节。
r前缀,raw原始字符串。示例print(r'你好\n世界')你好\n世界。
场景:爬虫数据分析要求原始信息。
字符串和字节相互转换

1.编码字符串.encode(encoding=’’) 返回二进制(进行编码)
2.二进制.decode(encoding=’’) 返回文字信息(进行解码)

'楠木'.encode()        # 默认用的是utf8编码
b'\xe6\xa5\xa0\xe6\x9c\xa8'

'楠木'.encode(encoding='utf8')       # 字符串转二进制用encode,编码
b'\xe6\xa5\xa0\xe6\x9c\xa8'
b'\xe6\xa5\xa0\xe6\x9c\xa8'.decode(encoding='utf8')     # 二进制转字符串用decode,解码
'楠木'

'楠木'.encode(encoding='gbk')
b'\xe9\xaa\xc4\xbe'
b'\xe9\xaa\xc4\xbe'.decode(encoding='gbk')
'楠木'

前缀b表示字节、二进制。因为二进制写起来比较长,所以输出的是十六进制\xe4。\x特殊前缀表示十六进制。0xe4是针对数字。
chr(),ord()

ord() 返回一个字符对应ascii或其他编码存储方式的十进制

ord('a')  →  97
bin(97)  →   '0b1100001'
ord('中')  →   20013
bin(20013)  →  '0b100111000101101'

十进制转编码对应的字符
场景:跟random()配合使用,生成验证码中的随机字母。判断是否中文或英文。

chr(97)  →  'a'
chr(0b1100001)  →  a
chr(20013)   →   中
chr(0b100111000101101)   →   中
字节可以遍历

场景:硬件温湿度传感器,返回的是一堆字节。

for b in b'\xe4\xb8\xad':
    print(b)

>>>  228
>>>  187
>>>  173
总的来说

1.自然信息,比如我们看到的文字’中’
2.机器只理解电平高低,二进制。所以需要把自然信息’编码’成二进制。
3.ascii Unicode utf8 等编码规则。最终转成二进制存储到硬盘上。例如二进制某汉字
0b11000010b11000010b1100001
4.但是二进制看着太长了,所以输出b’\xe4\xb8\xad’
5.二进制’解码’成自然信息。

相关标签: 类型转换