Python 获取ctypes对象的地址

Python 获取ctypes对象的地址,python,ctypes,Python,Ctypes,我有一个缓冲区,比如: bufstr = ctypes.create_string_buffer("Test", 32) 如何获取该缓冲区的地址?i、 e.如果我执行以下操作,则显示一个: print bufstr 比如: 例如,我知道我可以用byref()传递它;但是,如果我只是想得到那个地址(除了分割那个字符串!),那该怎么办呢 谢谢 使用ctypes 我相信: ctypes.addressof(bufstr) 我应该这样做。请注意,toString中提到的地址是Python对象的

我有一个缓冲区,比如:

bufstr = ctypes.create_string_buffer("Test", 32)
如何获取该缓冲区的地址?i、 e.如果我执行以下操作,则显示一个:

print bufstr
比如:


例如,我知道我可以用byref()传递它;但是,如果我只是想得到那个地址(除了分割那个字符串!),那该怎么办呢

谢谢

使用ctypes

我相信:

ctypes.addressof(bufstr)

我应该这样做。请注意,toString中提到的地址是Python对象的地址,而不是C内存。

只是出于好奇。。你为什么想要这个地址?@Apalala:必须将它传递给需要访问该缓冲区的嵌入式DLL。谢谢!(对不起,之前没有注意到你的回复)现在还有一件事。对于使用ctypes.create\u string\u buffer创建的缓冲区字符串,此操作正常。但是,如果我必须通过一个简单的长传呢?addressof()不适用于ctypes.c_long(给出一个TypeError)。我自己在解释器中尝试过,以确保它适用于
ctypes.c_long
。哇!你是对的。我只是太傻了。在将我的var分配给ctypes.c_long之后,我得到了一个myvar=3,它当然重新分配了一个Python Int。感谢您指出
bufstr.\uu str\uuu()
中给出的地址与
addressof(buf_str)
的值不同,这让我感到困惑。
ctypes.addressof(bufstr)
ctypes.addressof(bufstr)