如何用Python缓冲区对象做一个memset?

sor*_*rin 6 python buffer wxpython python-2.5

如何在Python缓冲区对象中对一组连续值进行快速重置?

主要是我正在寻找一个memset :)

PS.该解决方案应该与Python 2.5一起使用并修改缓冲区本身(无副本).

Pet*_*ers 3

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'
Run Code Online (Sandbox Code Playgroud)