【问题标题】:How to get a pointer to raw binary data in Python?如何在 Python 中获取指向原始二进制数据的指针?
【发布时间】:2014-08-02 17:36:37
【问题描述】:

我想通过 ctypes 和 Python API 获取指向字节、字节数组或 memoryview 实例的原始二进制数据的指针。

对于阅读,(c_char * len(b)).from_buffer(b) 在 Python 3 中工作。对于写作,我使用了以下内容:

buffer = c_void_p()
length = c_ssize_t()
pythonapi.PyObject_AsReadBuffer(py_object(b), byref(buffer), byref(length))

但是我发现代码在 Python 2.7 中无法使用 memoryview。

【问题讨论】:

  • ctypes.string_at() 怎么样?
  • @mdurant 正好相反。

标签: python python-2.7 ctypes


【解决方案1】:

目前,我使用通过 ctypes 定义的 Python 缓冲区结构和 Python API 函数 PyObject_GetBuffer 从任意兼容对象获取缓冲区。然后将我的 Python 缓冲区结构对象转换为 c_char 数组,并使用 PyBuffer_Release 释放创建的缓冲区对象。见https://github.com/Drekin/win-unicode-console/blob/master/win_unicode_console/buffer.py

【讨论】:

    猜你喜欢
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多