типы данных и манипулирование указателями

StackOverflow https://stackoverflow.com/questions/2494288

  •  21-09-2019
  •  | 
  •  

Вопрос

Я имею дело с буферами изображений, и я хочу иметь возможность доступа к данным в нескольких строках моего изображения для анализа с помощью библиотеки c.Я создал свой 8-битный пиксельный буфер в Python, используя create_string_buffer.Есть ли способ получить указатель на местоположение в этом буфере без повторного создания нового буфера?Моя цель - анализировать и изменять данные в этом буфере по частям, без необходимости много заниматься созданием буфера и копированием данных.

В этом случае, в конечном счете, библиотека C выполняет все манипуляции с буфером, поэтому мне фактически не нужно изменять значения внутри буфера с помощью Python.Мне просто нужно предоставить моей функции C доступ к данным в буфере.

Это было полезно?

Решение

create_string_buffer создать строку_буфера выдает вам объект ctypes (массив символов), затем byref, и я цитирую,

Возвращает облегченный указатель на obj, который должен быть экземпляром типа ctypes .смещение по умолчанию равно нулю, и должно быть целым числом, которое будет добавлено к значению внутреннего указателя.

Тот Самый offset аргумент был добавлен в версии 2.6, поэтому, если вы застряли на более старой версии, вам, к сожалению, потребуется больше работы.

Другие советы

Вы также можете использовать ctypes.cast(buf, ctypes.c_void_p)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top