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