Python双尖

2024-04-25 17:08:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从指向浮点数组的指针中获取值,但在python中它以c_void_p返回

C代码

double v;
const void *data;  
pa_stream_peek(s, &data, &length);  
v = ((const float*) data)[length / sizeof(float) -1];

迄今为止的Python

import ctypes
null_ptr = ctypes.c_void_p()
pa_stream_peek(stream, null_ptr, ctypes.c_ulong(length)) 

空的问题是ptr有一个int值(内存地址?)但是没有办法读取数组?!


Tags: datastream数组floatctypesnulllength浮点
3条回答

我的ctypes已经生锈了,但是我相信你想要的是指针(c_float)而不是c_void_p

所以试试这个:

null_ptr = POINTER(c_float)()
pa_stream_peek(stream, null_ptr, ctypes.c_ulong(length))
null_ptr[0]
null_ptr[5] # etc

您可能还希望使用byref传递空的ptr,例如

pa_stream_peek(stream, ctypes.byref(null_ptr), ctypes.c_ulong(length))

要以模仿C代码的方式使用ctypes,我建议(我已经不实践了,这还未测试):

vdata = ctypes.c_void_p()
length = ctypes.c_ulong(0)
pa_stream_peek(stream, ctypes.byref(vdata), ctypes.byref(length))
fdata = ctypes.cast(vdata, POINTER(float))

相关问题 更多 >