Python-字节序列【bytes、bytearray】
1、简介
Python3 引入两个新的类型bytes、bytearray。
bytes不可变字节序列;bytearray是可变字节数组。
2、编码与解码
2.1、编码
编码:str => bytes,将字符串这个字符序列使用指定字符集encode编码为一个个字节组成的序列bytes
2.2、解码
解码:bytes或bytearray => str,将一个个字节按照某种指定的字符集解码为一个个字符串组成的字符串
2.3、示例
print("abc".encode()) # 默认为utf-8 print("啊".encode('utf-8')) print("啊".encode('gbk')) print(b'abc'.decode('utf8')) print(b'\xb0\xa1'.decode('gbk'))
3、ASCII
3.1、简介
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套单字节编码系统
3.2、编码图
3.3、熟记
1、 \x00是ASCII表中第一项,C语言中的字符串结束符 2、 \t、\x09,表示tab字符 3、 \r\n是\x0d\x0a 4、 \x30~\x39 字符0~9,\x31是字符1 5、 \x41对应十进制65,表示A 6、 \x61对应十进制97,表示a 注意:这里的1指定是字符1,不是数字1 UTF-8、GBK都兼容了ASCII 'a\x09b\x0d\x0ac \x31\x41\x61' # ascii码,编码后的 'A' > 'a' # a大
4、Bytes初始化
4.1、语法
bytes() 空bytes bytes(int) 指定字节的bytes,被0填充 bytes(iterable_of_ints) -> bytes [0,255]的int组成的可迭代对象 bytes(string, encoding[, errors]) -> bytes 等价于string.encode() bytes(bytes_or_buffer) -> immutable copy of bytes_or_buffer 从一个字节序列或者buffer复制出一个新的不可变的bytes对象
使用b前缀定义 只允许基本ASCII使用字符形式b'abc9' 使用16进制表示b"\x41\x61"
4.2、示例
# bytes类型和str类型类似,都是不可变类型,操作方法类似。 print(b'abcd'[2]) # 返回int,指定是本字节对应的十进制数 x = b'\t\x09' print(x, len(x)) y = br'\t\x09' print(y, len(y))
5、bytearray初始化
5.1、语法
bytearray() 空bytearray bytearray(int) 指定字节的bytearray,被0填充 bytearray(iterable_of_ints) -> bytearray [0,255]的int组成的可迭代对象 bytearray(string, encoding[, errors]) -> bytearray 近似string.encode(),不过返回可变对象 bytearray(bytes_or_buffer) 从一个字节序列或者buffer复制出一个新的可变的bytearray对象
b前缀表示的是bytes,不是bytearray类型
由于bytearray类型是可变数组,所以,类似列表。 append(int) 尾部追加一个元素 insert(index, int) 在指定索引位置插入元素 extend(iterable_of_ints) 将一个可迭代的整数集合追加到当前bytearray pop(index=-1) 从指定索引上移除元素,默认从尾部移除 remove(value) 找到第一个value移除,找不到抛ValueError异常 注意:上述方法若需要使用int类型,值在[0, 255] clear() 清空bytearray reverse() 翻转bytearray,就地修改
5.2、示例
b = bytearray() b.append(97) b.append(99) b.insert(1,98) b.extend([65,66,67]) b.remove(66) b.pop() b.reverse() print(b) # 输出什么 b.clear()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码