如何在Python中创建一个用零填充的给定长度的字节或bytearray?

时间:2012-02-07 21:46:55

标签: python bytearray

我找到的所有解决方案都是用于列表。

感谢。

2 个答案:

答案 0 :(得分:52)

简单:

bytearray(100)

将为您提供100个零字节。

答案 1 :(得分:8)

对于bytes,还可以使用文字形式b'\0' * 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

Update1:​​使用constant folding in Python 3.7,文字来自现在快20倍。

<强> UPDATE2: 显然,恒定折叠有一个限制:

>>> 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