我有一个从 dll 导入并在 ctypes 中定义的函数。我设置restype
为c_void_p
. 所以现在当我调用该函数时,它返回指向 32byte 字节数组的指针。如何将此指针转换为 Python 字节类型?
这是函数(它HMAC
来自 OpenSSL):
self.HMAC = self._lib.HMAC
self.HMAC.restype = ctypes.c_void_p
self.HMAC.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int, ctypes.c_void_p, ctypes.c_int, ctypes.c_void_p, ctypes.c_void_p]
编辑:我试过c_void_p
用c_char_p
. 我得到了一些结果,但c_char_p
代表以空字符结尾的字符串,因此结果在第一个 00h 处被剪切。如果HMAC
结果中没有任何零,则它可以完美运行。但这仍然不能解决我的问题。