我正在使用Python ctypes从共享库中调用函数。 该函数使用char *缓冲区调用,并在其中写入结果。该函数的返回值是写入缓冲区的字节数。
调用该函数工作正常,但是我正在努力访问缓冲区的各个字节。
我创建缓冲区并按如下所示调用函数:
buf = (c_void_p * RECBUFFERSIZE)()
n = functionInLibrary(buf)
现在如何读取buf中存储的各个字节?
我已经尝试使用
cast(buf, c_char_p).value
将产生一个包含buf内容的字节对象。但是它以buf中的第一个空字节终止。
这正是我所不想要的。我需要从buf中读取前n
个字节。
答案 0 :(得分:0)
没关系。我自己发现的:
cast(buf, POINTER(c_char))[0:n]