[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