类型转换
原来学过:
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.二进制’解码’成自然信息。