Извлечение большого 32-битного целого числа без знака по характеристике Bluetooth с низким энергопотреблением GATT
Я пытаюсь получить очень большой (потенциально 2^32 - 1
) 32-разрядное целое число без знака из характеристики Bluetooth 4.0, используя getIntValue
метод моего BluetoothGattCharacteristic
пример.
Я прохожу FORMAT_UINT32
в getIntValue
, но потому что он возвращает Integer
он не может вернуть число больше 2^31 - 1
, Когда я пытаюсь получить значение больше 2^31 - 1
он неправильно возвращает отрицательное целое число.
Какой смысл getIntValue
принимающий FORMAT_UINT32
если он не может вернуть 32-разрядное целое число без знака? Есть что-то, чего мне не хватает?
Это мой единственный вариант использования getValue()
и вручную преобразовать его в long
?
1 ответ
Решение
Похоже, это работает для меня:
long value = characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT32, 0) & 0x00000000ffffffffL;