estoy usando ctypes y he definido a esta estructura con el fin de pasar parámetros¿Cómo creo una cadena de python a partir de una estructura ctype?
class my_struct(ctypes.Structure):
_fields_ = [ ("buffer", ctypes.c_char * BUFSIZE),
("size", ctypes.c_int)]
Entonces llamo a la función C usando el siguiente código, pero no sé cómo crear una cadena de la estructura que he creado.
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]
Quiero crear una cadena de Python usando los primeros n bytes del buffer (el buffer contiene caracteres NULL pero tengo que manejar esta situación y crear la cadena con 0x00 caracteres/L Si es necesario). La asignación
my_string = self.__proto.buffer[:self.__proto.size]
no funciona porque bacause trunca la cadena si aparece 0x00. Cualquier idea es bienvenida. Gracias por adelantado.
En Python 2.6.3, he probado la creación de una matriz ctypes como su búfer, pero no puedo ver que se trunca en realidad. De esta manera: ar = (ctypes.c_char * 10)(); ar.value = "prueba"; afirmar ar [: 6] == 'test \ x00 \ x00'. ¿Me estoy perdiendo de algo? – aknuds1