持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情
0环境
- 编辑器:idea
- 系统版本:win10
- python版本:3.9.6
1 bytes的概念
之前我们从字符串的角度看字节,现在我们在换个角度一观。bytes支持string所以的操作。
怎么支持的呢。
- bytes定义变量和普通定义字符串的区别点在于,需要加个前缀,且格式关键字b'正常是多个\x字母+数字组成,必有一个存在'
- 怎么在转化为字符串呢,字符串通过encode方法实现转换,那么转回去呢,decode在将bytes转化为字符串
2 操作
bytes也有类似字符串的操作,但前提条件是传参须是bytes,否则会报错,或者编辑器会提前提示。
bytes的操作需要按照字节的方式来,不要越境,古代电视剧经常会看到,当官兵追杀某个犯人,看到跑到另一个片区了,就会打道回府,或者说交涉,类似跨境调查,我们到了bytes的片区,就得按它的方式来办事一样。
def str_bytes_demo():
s = "饿了没"
bt = s.encode()
print(type(bt))
print(bt)
print(bt.decode())
# print(bt.find('e'))
print(bt.find(b'e'))
bt1 = b'abc'
print(type(bt1))
print(bt1.decode())
也可通过bytes.hex()获取十六进制。
4 bytearray
bytearray是bytes的可变版本。
def str_bytes_demo():
s = "饿了没"
bt = s.encode()
print(type(bt))
print(bt[0])
print(bt[1])
# 不可变
# bt[0] = b"1"
# 可变
ba = bytearray(b'ab')
ba[0] = int(b'N'.hex(), 16)
print(ba)
print(bytearray(b'Nab'))
bytearray常用方法insert、append、remove、count的参数必须是int。而且是0-256范围内的整型(8位无符号整数)。
5 小结
bytes通过decode得到字符串,bytes可以像字符串那样操作,但需要注意传参必须是关键字b作为前缀。bytes的可变版本bytearray,它可以操作insert这类的方法,但虚是整型,还需要区分bytes的不可变,以及bytearray不可变。