/ / python ctypes bitové balenie dát - python, python-2.7, bitová manipulácia, ctype

python ctypes bitové dátové balíky - python, python-2.7, bit-manipulation, ctype

item = -35519
data_in = ctypes.c_int16(item)
data_pkd = (ctypes.c_int32(0) | data_in)

Mám pod chybou

data_pkd = (ctypes.c_int32(0) | data_in)
TypeError: unsupported operand type(s) for |: "c_long" and "c_short"
|31||30|    29  28  27  26  25  24  23  22  21  20  19  18  17  16| 15  14  13  12  11  10  9   8   7   6   5   4   3   2   1   0|
|P|M|------------------unused-------------------------------------|------------------------------item----------------------------|

Mám v úmysle poslať 32-bitové testovacie dáta do aplikácie C akceptujúcej int32 ako vstup, uvedené vo vyššie uvedenom dátovom formáte.

Vďaka

odpovede:

0 pre odpoveď č. 1

Nepotrebujete bitovú rýchlosť - alebo iba zabalte 16-bitovú hodnotu do 32-bitovej, t.

data_pkd = ctypes.c_int32(data_in.value)

Ak chcete skutočne vykonávať bitové hodnoty alebo hodnoty ctypes, použite ich atribút:

x = ctypes.c_int16(...)
y = ctypes.c_int32(...)
data_pkd = ctypes.c_int32(x.value | y.value)