我有一个从 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结果中没有任何零,则它可以完美运行。但这仍然不能解决我的问题。