Я использую ctypes, и я определил эту структуру для передачи параметров
class my_struct(ctypes.Structure):
_fields_ = [ ("buffer", ctypes.c_char * BUFSIZE),
("size", ctypes.c_int )]
Затем я вызываю функцию C, используя следующий код, но я не знаю, как создать строку из структуры, которую я создал.
class Client():
def __init__(self):
self.__proto = my_struct()
self.client = ctypes.cdll.LoadLibrary(r"I:\bin\client.dll")
def version(self):
ret = self.client.execute(ctypes.byref(self.__proto))
my_string = self.__proto.buffer[:self.__proto.size]
Я хочу создать строку Python, используя первые n байтов буфера (буфер содержит NULL-символы, но я должен разобраться с этой ситуацией и создать строку с / 0x00 символами, если это необходимо). Присвоение
my_string = self.__proto.buffer[:self.__proto.size]
не работает, потому что обрезает строку, если появляется 0x00. Любая идея приветствуется. Заранее спасибо.