2017-06-22 4 views
1

J'utilise les ctypes python pour la première fois. Mon intention est de convertir une liste python en un tableau qui se trouve dans l'union ctype. Cependant, quand j'essaye de faire ceci je reçois TypeError. J'ai collé mon code ci-dessous puisque je n'ai pas trouvé d'exemples appropriés pour ce scénario: Veuillez commenter.Accès aux tableaux à l'intérieur de ctypes union

from ctypes import * 
class state_struct(Structure): 
    _fields_ = [ 
       ("loc0", c_uint32 * 3), 
       ("loc1", c_uint32), 
       ("loc2", c_uint32 * 12), 
       ("loc3", c_uint32 * 28), 
       ("loc4", c_uint32 * 2), 
       ] 

class state_union(Union): 
    _fields_ = [("state_struct", state_struct), 
       ("data", c_uint32 * 46), 

       ] 
def populate_union(): 
    u = state_union() 
    l = [1,2,3] 
    for i in iter(l): 
     u.state_struct.loc0 = i 


populate_union() 

TypeError: par exemple c_uint_Array_3 prévu, a int

Répondre

1

state_struct.loc0 est un tableau de longueur 3. Vous devez indexer dans ses éléments si vous souhaitez attribuer des entiers pour eux.

Par exemple:

l = [1,2,3] 
for index, value in enumerate(l): 
    u.state_struct.loc0[index] = value 

ou vous pouvez affecter toute la liste en une seule fois en utilisant l'indexation des tranches:

u.state_struct.loc0[:] = l