[python] Pole v ctypes

Petr Messner petr.messner na gmail.com
Neděle Únor 7 18:09:54 CET 2010


Ahoj,

> >>> import ctypes
> >>> plnp = [1, 2, 3, 4]
> >>> array = ctypes.c_double * len(plnp)
> >>> clnp = array(*plnp)
> >>> clnp
> <__main__.c_double_Array_4 object at 0x10024bef0>
> >>> list(clnp)
> [1.0, 2.0, 3.0, 4.0]

PM

On 7.2.2010, at 18:03, Radek Machulka wrote:

> Zdar,
> 
> posledni dobou se to tu celkem rozjelo, tak prihodim i ja svoji trosku do 
> mlyna.
> 
> Snazim se napsat vlastni wrapper okolo C knihovny (LabView) pomoci modulu 
> ctypes. Jeden problem, na ktery jsem narazil je transformace datovych typu, 
> predevsim pole. Fukce v pythonu dostane jako vstupni parametr pole (iterable), 
> ktery musi prevest na pole v C a predat C funkci. Podle toho co jsem nasel by 
> melo reseni vypadat nasledovne (pro pole o delce 3):
> 
> float64 = ctypes.c_double
> array = float64 * 3
> cInp = array(pInp[0], pInp[1], pInp[2]),
> 
> kde pInp je pole v pythonu a cInp je pole v C.
> 
> Jak predchozi priklad upravit tak, aby podporoval vstupni pole (pInp) o 
> libovolne (cti predem nezname) delce? Da se predpokladat, ze druhy radek bude 
> 
> array = float64 * len(pInp),
> 
> ale co ten treti?
> 
> Predem dik
> Radek



Další informace o konferenci Python