Python: conversão de strings para uso com ctypes.c_void_p ()
Pergunta
dada uma string:
msg="hello world"
Como posso definir isso como um tipo de dados ctypes.c_void_p()
?
o seguinte código produz um "não pode ser convertido para ponteiro" exceção:
data=ctypes.c_void_p(msg)
data
é necessário para ser um tipo void*
em C, porque está a ser passado para uma DLL.
Eu estou assumindo que não há uma maneira de embalar / descompactar a string usando o pacote struct
, mas infelizmente estou muito familiarizado com este processo.
Solução
Algo como isso? Usando ctypes.cast
?
>>> import ctypes
>>> p1= ctypes.c_char_p("hi mom")
>>> ctypes.cast( p1, ctypes.c_void_p )
c_void_p(11133300)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow