一、 字节串bytes
1.1 什么是字节串
作用 | 存储以字节为单位的数据 |
说明 | 1.字节串是不可变的字节序列 |
2.字节是0~255的整数 | |
3.字节串存的是整数 | |
创建空字节串的字面值 | b = b’’ |
b绑定空字符串 | |
可单引号、双引号、三引号 | |
创建非空字节串的字面值 | b = b’ABCD’ |
b = b’\x41\x42’ | |
不能写 b = b‘中文’,可以用构造函数转换 |
1.2字节串的构造函数bytes
bytes() | 生成一个字的字节串,等同于b’’ |
bytes(整型可迭代对象) | 用可迭代对象初始化一个字节串 |
bytes(整数n) | 生成n个值为0的字节串 |
bytes(字符串,encoding =‘utf-8’) | 用字符串的转换编码生成一个字节串 |
示例 |
|
b = bytes() b = bytes(range(0, 255)) b = bytes(10) b = bytes('您好', 'utf-8') | b’’
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' b'\xe6\x82\xa8\xe5\xa5\xbd' |
b'\x41\x42' bytes(range(4)) | b'AB' b'\x00\x01\x02\x03' |
1.3 字节串的运算
+ += * *= < <= > >= | |
In /not in |
|
索引和切片 | 不支持索引赋值 |
函数: | len、max、min、sum、any、all |
示例 |
|
b‘ABC123’ ‘A’ in b b‘A’ in b 49 in b |
False,此时‘A’是字符串 True True,可以用整数判断 |
二、bytes与str
区别 | ||
Bytes | String | |
存储字节(0-255) | 存储Unicode字符(0-65535或更大) | |
转换 | ||
编码(encode) Str ------------------------> bytes b = s.encode(encoding=‘urf-8’) | 解码(decode) Bytes -------------------------------->str s = b.decode(encoding=‘utf-8’) |
| |
List -----------> tuple Set ----------->frozenset Bytearray -----------> bytes 可变 -----------> 不可变 |
|
三、字节数组 bytearray
Bytearray 是可变的字节序列 |
3.1 创建函数
Bytearray() | 创建字节数组 |
bytearray(可迭代对象) | 同bytes(可迭代对象) |
bytearray(整数n) |
|
bytearray(字符串,encoding=‘utf-8’) |
|
3.2 运算操作
+ += * *= |
|
< <= > >= == != |
|
索引/切片 | 字节数组支持索引和切片赋值,规则同列表 |
| 赋的值只能是整数 ba = b’ABCDEF’ b[::2] = [48, 49, 50] >>>ba= b’0B1D2F’ |
字节数组的方法
见help