Извлечение большого 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;
Другие вопросы по тегам