将ctypes字节数组转换为浮点数的Python列表

jen*_*sph 0 c python arrays ctypes casting

我已经分配了一个数组并使用Python ctypes模块进行转换:

    dataC = ctypes.cast(crt.malloc(size), ctypes.POINTER(ctypes.c_ubyte))
Run Code Online (Sandbox Code Playgroud)

为了从C库中获取字节数据:

    someClib.getData(handle, dataC)
Run Code Online (Sandbox Code Playgroud)

现在这个数组实际上是一个C float类型的数组.如何将其转换为浮动类型数字的Python列表?

Dav*_*nan 5

您可以强制转换为float指针:

floatPtr = ctypes.cast(dataC, ctypes.POINTER(ctypes.c_float))
Run Code Online (Sandbox Code Playgroud)

然后使用列表推导,例如,拉出浮点数:

floatList = [floatPtr[i] for i in range(arrayLength)]
Run Code Online (Sandbox Code Playgroud)

现在,只有你知道它的价值,arrayLength但似乎我觉得它等于size / ctypes.sizeof(ctypes.c_float).