我有代码,但我不知道为什么它工作。你知道吗
str2payload = lib3.str2payload
str2payload.argtypes = [POINTER(mbuf_t), POINTER(c_char)]
# sbuf = ..
val = b"asdfasdfasdhfjkasgdfjasgdfhjasgdfjhasgdfjhasgdfgjh"
rmr_str2payload(sbuf, val)
这和预期的一样。在这里,val只是python中的一个bytes对象。但是,函数签名表示它应该是POINTER(c_char)
。那么什么是魔法转换呢?你知道吗
顺便说一句,我之所以使用POINTER(c_char)
,是因为它在这里说:https://docs.python.org/3.7/library/ctypes.html#ctypes.c_char_p
从ctypes documentation:
相关问题 更多 >
编程相关推荐