Python中的bytearray是可变的二进制数据序列,用于存储0-255整数,支持从字符串、字节、列表等创建,可修改元素、切片、追加和扩展,适用于处理文件、网络或多媒体中的二进制数据。

Python中的字节数组(bytearray)是一种可变的序列类型,用来存储0到255之间的整数,常用于处理二进制数据。它和bytes类型很像,但关键区别是bytearray可以修改,而bytes是不可变的。
创建字节数组
你可以通过多种方式创建一个bytearray:
- 从字符串创建(需指定编码):
ba = bytearray("hello", "utf-8") - 从字节对象创建:
ba = bytearray(b"hello") - 从整数列表创建:
ba = bytearray([104, 101, 108, 108, 111]) - 创建指定长度的空字节数组:
ba = bytearray(5)(内容初始化为0)
修改字节数组
因为bytearray是可变的,你可以直接修改其中的元素:
- 单个赋值:
ba[0] = 72 # 将第一个字节改为'H' - 切片赋值:
ba[1:3] = b"EL" - 追加字节:
ba.append(33) # 添加'!' - 扩展数据:
ba.extend(b" world")
常见使用场景
字节数组在处理网络数据、文件读写或图像音频等二进制内容时非常有用。
在WINDOWS下,编译时的路径是WINDOWS安装目录。 ; 在命令行模式下,PHP.INI的查找路径可以用 -C 参数替代。 ; 该文件的语法非常简单。空白字符和用分号´;´开始的行被简单地忽略(就象你可能 ; 猜到的一样)。 章节标题(例如 : [FOO])也被简单地忽略,即使将来它们可能 ; 有某种的意义。 ; ;
立即学习“Python免费学习笔记(深入)”;
- 读取文件部分内容并修改:
with open("data.bin", "rb") as f:
data = bytearray(f.read())
data[0] = 0xFF # 修改第一个字节 - 构建协议数据包:
packet = bytearray(4)
packet[0] = 0x01
packet[1] = 0x02
packet[2:] = b"\x03\x04" - 与bytes互相转换:
b = bytes(ba) # 转为不可变bytesnew_ba = bytearray(b) # 再转回来
基本上就这些。掌握bytearray的关键是理解它是“可变的二进制数据容器”,适合需要频繁修改字节内容的场景。不复杂但容易忽略的是:操作时确保数值在0~255之间,否则会报错。










