我想使用memset函数。我有一个类中的帧缓冲区,其中包含从其他操作中获取的数据,现在我想将该帧缓冲区中的所有内容清除为0x00或0xFF。我在文档中没有看到clear方法,但有一个可能有效的zfill方法。我考虑只是再次调用字节数组的init方法,但不确定是否会在以后导致内存问题。
我正在使用Python 2.7。
Python不同于C语言,在这里你不需要过多地担心内存问题。你只需要简单地执行:
a = bytearray("abcd") # initialized it with real data
a = bytearray(5) # just a byte array of size 5 filled with zeros
In [1]: ba = bytearray(range(100))
In [2]: ba
Out[2]: bytearray(b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abc')
In [3]: ba[:] = b'\x00' * len(ba)
In [4]: ba
Out[4]: bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
uint8
数组的NumPy数组:import numpy as np
fb = np.zeros((480, 640), dtype=np.uint8) # a 640x480 monochrome framebuffer
然后非常简单地清除帧缓冲区:
fb[:] = 0 # or fb[:] = 0xff
fb[80:120, 40:60]
,以便廉价地获取矩形区域,并且您可以使用非常少的代码实现绘图操作,例如blitting。此外,通过np.tobytes
,您仍然可以获得字节表示。
mmap
,你实际上有时候想要清空内容。 - Antti Haapala -- Слава Україніbytearray
,对吗? - ForceBru