我正试图使用BluetoothGattCharacteristic
实例的getIntValue
方法从蓝牙4.0特性中检索一个非常大(可能是2^32 - 1
)的无符号32位整数。
我将FORMAT_UINT32
传递给getIntValue
,但因为它返回Integer
,所以不能返回大于2^31 - 1
的数字。当我尝试获取一个大于2^31 - 1
的值时,它错误地返回了一个负整数。
如果getIntValue
不可能返回一个无符号的32位整数,那么它接受FORMAT_UINT32
有什么意义?我有什么东西不见了吗?
我唯一的选择是使用getValue()
并手动将其转换为long
吗?
看起来这对我有用:
long value = characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT32, 0) & 0x00000000ffffffffL;