如何在Python中创建一个指定长度的零填充字节或字节数组?

69 投票
2 回答
90128 浏览
提问于 2025-04-17 12:32

我找到的所有解决方案都是针对列表的。

谢谢。

2 个回答

25

对于bytes类型的数据,你可以使用字面量的形式,比如b'\0' * 100,这表示创建一个包含100个零字节的字节串。

# Python 3.6.4 (64-bit), Windows 10
from timeit import timeit
print(timeit(r'b"\0" * 100'))  # 0.04987576772443264
print(timeit('bytes(100)'))  # 0.1353608166305015

更新1:在Python 3.7中,由于引入了常量折叠,这种字面量的写法现在快了将近20倍。

更新2:显然,常量折叠是有一定限制的:

>>> from dis import dis
>>> dis(r'b"\0" * 4096')
  1           0 LOAD_CONST               0 (b'\x00\x00\x00...')
              2 RETURN_VALUE
>>> dis(r'b"\0" * 4097')
  1           0 LOAD_CONST               0 (b'\x00')
              2 LOAD_CONST               1 (4097)
              4 BINARY_MULTIPLY
              6 RETURN_VALUE
101

这段代码会给你生成100个零字节:

bytearray(100)

或者你也可以用非零的值来填充这个数组:

bytearray([1] * 100)

撰写回答