一、bytes、bytearry
- python3版本引入两个新类型
- bytes: 不可变字节序列
- bytearry:字节数组,可变
二、字符串与bytes
- 字符串是字符组成的有序序列,字符可以使用编码(ASCII)来理解
- bytes是字节组成的有序不可变序列
- bytearry是字节组成的有序可变序列
三、编码与解码
- 编码:字符串按照不同的字符集编码encode返回字节序列bytes
- encode(encoding=‘utf-8‘,error=‘strict‘)
-
- 解码:字节序列按照不同的字符集解码decode返回字符串
- 举例:
- 编码字符串‘abc’
>>> bytes(‘abc‘,‘UTF8‘)
b‘abc‘
编码字符串‘abc’
>>> a = ‘abc‘.encode()
>>> a
b‘abc‘
>>> type(a)
<class ‘bytes‘>
解码字符串‘abc‘
>>> a.decode()
‘abc‘
>>> a
b‘abc‘
影子拷贝
>>> b = bytes(a)
>>> b
b‘abc‘
实际比较a和b的值
>>> id(a) == id(b)
True
实际比较内存id
>>> id(a) is id(b)
False
>>>
四、bytes定义
- bytes() 空bytes
- bytes(string,encoding) 返回bytes类型,等价于string.encode()
- bytes(bytes_or_buffer) 从一个字节序列或者buffer复制出一个新的不可变的bytes对象
- 使用b前缀定义,只允许基本ASCII使用字符形式,如b‘abc‘
五、bytes操作
- 和字符串str类型操作类似,都是不可变类型,所以方法很多都是一样,只不过bytes的方法,输入时bytes,输出是bytes
- a.encode().hex() 返回16进制的字符串
- 索引访问:a[2] 返回该字节对应的ACSII对应的数,int类型
- bytearray和bytes操作一样
- 举例:
- >>> a = b‘abcdef‘
>>> a.replace(b‘f‘, b‘k‘)
b‘abcdek‘
>>> a.find(b‘b‘)
1
>>>
切割
>>> a = b‘abcdef‘
>>> a.split(b‘b‘)
[b‘a‘, b‘cdef‘]
>>> ‘abc‘.encode().hex() 十六进制
‘616263‘
索引访问
>>> a[2] 对应的编码数字
99
python内置函数bytes、bytearray
原文:https://www.cnblogs.com/jiangzuofenghua/p/11362912.html