我刚开始使用位字符串和ctypes,我有一部分二进制文件存储在startdata
,一个^{
> print(startdata)
0x0000000109f0000000010605ffff
现在,我必须按原样将这些数据传递给一个以unsigned char *
作为参数的C函数,所以我首先尝试这样做:
最后要做到这一点:
buf_ptr = cast(pointer(buf), POINTER(c_ubyte))
这是可行的,但是如何将来自startdata
的字节数据分配给我刚刚创建的数组/缓冲区?在
这不起作用:
> buf = (c_ubyte * len(startdata))(*startdata.bytes)
TypeError: an integer is required
下面是一个可能的解决方案(请注意,我使用的是python3):
(注意:将
bytes
实例转换为ctypes字节数组也是一样,只需删除data.bytes
中的.bytes
)。在然后可以使用^{} 将缓冲区传递给C函数:
^{pr2}$相关问题 更多 >
编程相关推荐