如何对 Python 缓冲区对象中的一组连续值进行快速重置?
主要是我在寻找一个 memset :)
PS。该解决方案应适用于 Python 2.5 并修改缓冲区本身(无副本)。
如何对 Python 缓冲区对象中的一组连续值进行快速重置?
主要是我在寻找一个 memset :)
PS。该解决方案应适用于 Python 2.5 并修改缓冲区本身(无副本)。
ctypes 包有一个内置的 memset 函数。Ctypes 确实适用于 Python 2.5,但默认情况下不包括在内。您将需要单独安装。
def memsetObject(bufferObject):
"Note, dangerous"
import ctypes
data = ctypes.POINTER(ctypes.c_char)()
size = ctypes.c_int() # Note, int only valid for python 2.5
ctypes.pythonapi.PyObject_AsCharBuffer(ctypes.py_object(bufferObject), ctypes.pointer(data), ctypes.pointer(size))
ctypes.memset(data, 0, size.value)
testObject = "sneakyctypes"
memsetObject(testObject)
print repr(testObject)
# '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
如果您只想将值设置为零,则可以使用:
size = ...
buffer = bytearray(size)
或者可能:
buffer[:] = bytearray(size)
如果可以写入,请尝试使用itertools.repeat()
import itertools
my_buffer[:] = itertools.repeat(0, len(my_buffer))