типы данных и манипулирование указателями
Вопрос
Я имею дело с буферами изображений, и я хочу иметь возможность доступа к данным в нескольких строках моего изображения для анализа с помощью библиотеки 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)