Ich muss dynamisch eine ctypes Strukturfeld Größe ändern:Ändern der Größe eines ctypes Struktur
from ctypes import *
class a(Structure):
_fields_ = [('first', c_ubyte*10), ('second', c_ubyte*20)]
Lassen Sie uns jetzt sagen, ich brauche ‚zweiten‘ 100 Bytes anstatt zu sein von 20. Ich habe versucht, die folgenden:
class b(a):
_fields_ = [('second', c_ubyte*100)]
dem zu arbeiten scheint:
b.second
<Field type=c_ubyte_Array_100, ofs=30, size=100>
Das Problem ist, dass alle er hinzugefügt, um die 100-Element-Array an das Ende b getan hat:
sizeof(b) #want this to be 110
130
c = b()
addressof(c.second) - addressof(c) #want this to be 10
30
Wie kann ich die ‚zweite‘ Mitglied b verlängern, ohne es als eine Klasse in keinem Zusammenhang mit einem völlig neu zu definieren.
Auch Lösungen wie Resize funktionieren nicht:
c = a()
resize(c.second, 100)
ValueError: Memory cannot be resized because this object doesn't own it