Python 内建函数列表 > Python 的内置函数 bytearray

1
2
3
4
5
6
7
8
class bytearray(x=b''):
'''
创建 bytearray

:param x: 要转换的变量
:return: x 转换为 bytearray 后的值
'''

Python 的内置函数 bytearray 是一个可变序列,用于存储字节数据。它类似于 bytes 类型,但主要区别在于 bytearray 是可变的,而 bytes 是不可变的。以下是关于 bytearray 的详细说明和使用场景:

1. 基本语法

1
2
bytearray([source[, encoding[, errors]]])

  • source(可选):可以是整数、字符串、可迭代对象或缓冲区对象。
  • encoding(可选):如果 source 是字符串,需要指定编码格式(如 'utf-8')。
  • errors(可选):指定编码错误处理方式(如 'strict''ignore''replace')。

2. 创建 bytearray 的方式

(1) 创建空 bytearray
1
2
3
ba = bytearray()
print(ba) # 输出:bytearray(b'')

(2) 指定长度的 bytearray(整数初始化)
1
2
3
ba = bytearray(5)  # 创建 5 个字节,默认值为 0
print(ba) # 输出:bytearray(b'\x00\x00\x00\x00\x00')

(3) 从字符串转换
1
2
3
ba = bytearray("hello", "utf-8")
print(ba) # 输出:bytearray(b'hello')

(4) 从迭代对象(如列表)转换
1
2
3
ba = bytearray([65, 66, 67])  # ASCII 码对应 A, B, C
print(ba) # 输出:bytearray(b'ABC')

(5) 从 bytes 转换
1
2
3
4
b = b"example"
ba = bytearray(b)
print(ba) # 输出:bytearray(b'example')

3. bytearray 的特性

  • 可变性:可以修改其中的字节值。
    1
    2
    3
    ba = bytearray(b"hello")  
    ba[0] = 72 # 修改第一个字节为大写 'H'
    print(ba) # 输出:bytearray(b'Hello')
  • 支持列表操作
    • 可以添加、删除、修改元素。
    • 支持切片操作。

4. 常见应用场景

  • 二进制数据处理:适用于解析或修改二进制文件、网络协议等场景。
    1
    2
    data = bytearray(b"\x01\x02\x03")  
    data.append(4) # 添加字节 0x04
  • 临时缓冲区:需要动态修改的二进制数据缓冲区。
    1
    2
    buffer = bytearray()  
    buffer.extend(b"data")
  • 文本处理(编码转换):如从不同编码格式转换字节数据。
    1
    2
    text = "你好"  
    ba = bytearray(text.encode("utf-8"))

5. 与 bytes 的区别

特性 bytearray bytes
可变性 ✅ 可修改 ❌ 不可修改
性能 稍慢(可变开销) 更快(不可变优化)
适用场景 需要动态修改字节 固定不变的二进制数据

6. 总结

bytearray 提供了一种灵活的方式处理可变二进制数据,适用于需要动态修改字节的场景,如网络通信、二进制文件操作等。如果数据不需要修改,建议使用 bytes 以提高性能。


本文是转载文章,点击查看原文