item = -35519
data_in = ctypes.c_int16(item)
data_pkd = (ctypes.c_int32(0) | data_in)
我收到以下错误
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----------------------------|
我打算将32位测试数据发送到接受int32作为输入的C应用程序,如上面的数据格式所述。
由于
答案 0 :(得分:0)
您不需要按位 - 或者只需将16位值打包成32位值,即促销:
data_pkd = ctypes.c_int32(data_in.value)
要实际执行按位或按ctypes值,请对其value属性进行操作:
x = ctypes.c_int16(...)
y = ctypes.c_int32(...)
data_pkd = ctypes.c_int32(x.value | y.value)