2008-11-25 16 views
7

Dada una cadena:Python: la conversión de cadenas para su uso con ctypes.c_void_p()

msg="hello world" 

¿Cómo puedo definir esto como un tipo de datos ctypes.c_void_p()?

el siguiente código produce un "no pueden ser convertidos a puntero" excepción:

data=ctypes.c_void_p(msg) 

data se requiere para ser un tipo void* en C, porque está siendo pasado a una DLL.

Supongo que hay una forma de empaquetar/descomprimir la cadena utilizando el paquete struct, pero desafortunadamente no estoy familiarizado con este proceso.

Respuesta

10

¿Algo como esto? ¿Usando ctypes.cast?

>>> import ctypes 
>>> p1= ctypes.c_char_p("hi mom") 
>>> ctypes.cast(p1, ctypes.c_void_p) 
c_void_p(11133300) 
+0

Creo que eso es exactamente lo que estoy buscando. ¡gracias! – Thedaego

Cuestiones relacionadas