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ď č. 1Nepotrebujete 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)