編集:この答えは間違っています。s = s.translate('\0'*256)
は よりも遅いためs = bytearray(256)
、ここで使用しても意味がありませんtranslate
。@gnibbler はより良いソリューションを提供します。
バイト配列には、文字列と同じメソッドが多数あります。translate メソッドを使用できます。
In [64]: s = bytearray('Hello World')
In [65]: s
Out[65]: bytearray(b'Hello World')
In [66]: import string
In [67]: zero = string.maketrans(buffer(bytearray(range(256))),buffer(bytearray(256)))
In [68]: s.translate(zero)
Out[68]: bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
ところで、Dave Beazley は非常に役立つbytearray の紹介を書いています。
または、ミリムースの答えをわずかに変更します。
In [72]: s.translate('\0'*256)
Out[72]: bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
In [73]: %timeit s.translate('\0'*256)
1000000 loops, best of 3: 282 ns per loop
In [74]: %timeit s.translate(bytearray(256))
1000000 loops, best of 3: 398 ns per loop