如何在Python中获取va_list的内容?

时间:2012-04-23 21:24:00

标签: python list variables arguments variadic-functions

(我在Windows上。)

我在Python中有一个从DLL调用的回调函数(我使用ctypes模块)。一个参数的类型为va_list。有没有办法得到这个的内容?我不知道如何阅读正确的内存位置(here是一个描述)。

如果有一个用于Python的va_list解析器,那将是最好的。或者包含用于获取va_list的参数的函数的DLL。

有谁知道解决方案?

我找到了解决方案:

您可以使用ctypes调用标准C函数,例如vsprintf,它接受va_list参数。 (格式化打印我希望这样做。)

这是我的代码:

bufferString = ctypes.create_string_buffer(4096)
ctypes.cdll.msvcrt.vsprintf(bufferString, fmt.raw, ctypes.cast(ap, ctypes.c_void_p))
print ctypes.cast(bufferString, ctypes.c_char_p)

fmt.raw指向格式字符串,apva_list的地址。

0 个答案:

没有答案