Python中文
首页
教程
问答
标签
搜索
登录
注册
使用python ctypes将浮动缓冲区从共享库获取到python字符串
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我试图使用python ctypes从共享库中使用这两个C函数:</p> <pre> <code>bool decompress_rgb(unsigned char *data, long dataLen, int scale) float* getRgbBuffer()</code></pre> <p>第一个功能运行良好。我可以通过在共享库中放入一些调试代码并检查输入来判断。</p> <p>问题是把数据拿出来。RGB缓冲区是一个指向浮点(显然)的指针,该指针在应用程序的生命周期中保持不变。因此,每当我想解压缩一个图像时,我都会调用<code>decompress_rgb</code>,然后需要查看<code>getRgbBuffer</code>指向的位置是什么。我知道缓冲区的大小是(720*288*sizeof(float))所以我想这必须在某个地方发挥作用。</p> <p>没有<code>c_float_p</code>类型,所以我想试试这个:</p> <pre><code>getRgbBuffer.restype = c_char_p</code></pre> <p>然后我会:</p> <pre><code>ptr = getRgbBuffer() print "ptr is ", ptr</code></pre> <p>它只输出:</p> <pre><code>ptr = 3078746120</code></pre> <p>我猜这是实际地址,而不是内容,但即使我成功地取消了指针的引用并获得了内容,它也只是第一个字符。</p> <p>如何将整个缓冲区的内容转换为python字符串?</p> <p><strong>编辑:</strong>必须更改:</p> <pre><code>getRgbBuffer.restype = c_char_p</code></pre> <p>到</p> <pre><code>getRgbBuffer.restype = c_void_p</code></pre> <p>但巴斯塔圣的回答奏效了。</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我已经有一段时间没有使用ctypes了,我也没有足够方便的返回“double*”的东西来测试它,但是如果你想要一个c_float_p:</p> <pre><code>c_float_p = ctypes.POINTER(ctypes.c_float) </code></pre> <p>读了巴斯塔德圣的答案,你只需要原始数据,但我不确定你这样做是否是为了解决没有cúu floatúp的问题</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何将Python中的列表复制到给定的目标中?
1 回答
如何将python中的列表插入SQL表
4 回答
如何将python中的列表转换为numpy数组以放入十位
7 回答
如何将python中的列表输入javascript?
7 回答
如何将python中的列表返回给dag?
8 回答
如何将Python中的列表项重新排列成成对的元组/列表?
6 回答
如何将Python中的初始化对象序列化为XML?
10 回答
如何将python中的十进制字符串转换为数字?
3 回答
如何将Python中的原始输入文本转换为Tkinter中的标签?
10 回答
如何将python中的反斜杠命令转换为在Linux上运行
5 回答
如何将python中的命令行参数转换为字典?
3 回答
如何将python中的图像值传递到kivy中的kv文件?
8 回答
如何将Python中的图像数组(枕头对象)上传到Google云
2 回答
如何将Python中的图像编码为Base64?
2 回答
如何将python中的图像调整为灰度低分辨率,如MNIST时尚数据?
5 回答
如何将python中的多个html输出保存到单个文件(或多个)中?
4 回答
如何将Python中的多个ifelse语句重构为一个函数?
6 回答
如何将Python中的多处理与Django结合使用,从xml文件创建数千个模型实例?
9 回答
如何将python中的多级API响应转换为dataframe
9 回答
如何将python中的多线程编程模型转换为异步/等待模型?
4 回答