je dois redimensionner dynamiquement un champ de structure ctypes:Redimensionner une structure de ctypes
from ctypes import *
class a(Structure):
_fields_ = [('first', c_ubyte*10), ('second', c_ubyte*20)]
Maintenant, disons que je dois « second » pour être 100 octets au lieu de 20. J'ai essayé les éléments suivants:
class b(a):
_fields_ = [('second', c_ubyte*100)]
ce qui semble fonctionner:
b.second
<Field type=c_ubyte_Array_100, ofs=30, size=100>
le problème est que tout ce qu'il a fait est ajouté le tableau de l'élément 100 à la fin de b:
sizeof(b) #want this to be 110
130
c = b()
addressof(c.second) - addressof(c) #want this to be 10
30
Alors, comment puis-je allonger le membre « second » de b sans complètement redéfinir comme une classe sans rapport avec un.
En outre, des solutions telles que le redimensionnement ne fonctionnent pas:
c = a()
resize(c.second, 100)
ValueError: Memory cannot be resized because this object doesn't own it