На самом деле я пишу программу на python с модулем cffi для тестирования моей библиотеки C / ASM, и мне удалось заставить ее работать. Но я не знаю, как получить доступ к адресу символа в середине строки, чтобы передать его в мою функцию lib. Для примера:
def my_bzero_test():
str = b"hello world"
print(str)
lib.ft_bzero(str, 5)
print(str)
, который печатает:
b'hello world '
b '\ x00 \ x00 \ x00 \ x00 \ x00 world'
Но как я могу проверить что-то вроде:
def my_bzero_test():
str = b"hello world"
print(str)
lib.ft_bzero(str + 5, 5) # C-style accessing &str[5]
print(str)
Я пробовал разные вещи, например:
def my_bzero_test():
str = ctypes.create_string_buffer(b"hello world")
addr = ctypes.addressof(str)
print(hex(addr))
print(str)
lib.ft_bzero(addr + 5, 5)
print(str)
выход:
TypeError: инициализатор для ctype 'void *' должен быть указателем cdata, а не int
также пытался с id (), но безуспешно ...
Я не очень знаком с python, но мне кажется, что это не тривиальное использование, поэтому небольшая помощь здесь будет принята, спасибо!
Python 3.7.0