安卓 java msb/lsb在ble通信中的应用
我在安卓系统中实现了一个与设备通信的应用程序。这个设备发送给我一些数据,我必须解释它
例如: 当它发送给我0x34时,我必须进行一些操作,当0x35发送给其他一些操作并继续
当我必须比较一个intere字节时,我没有问题: 我会这样做:
if((byte[0]& 0xff)==0x34)
do something
else
do something else
但当我只需要解释这个字节的一部分时,就会出现一些问题
例如:
从这个字节α中取B:|A(3位)|B(5位)|。为了正确地做到这一点,我必须这样做:
B = (alpha&0xFF)>>3;
但为什么呢
我认为正确的方法是:
mask = 0x07<<5;
B= alpha && mask
我哪里做错了
# 1 楼答案
BLE Core Spec使用Little Endian字节传输
在BluetoothGattCharacteristic类中有一些辅助方法可以帮助您读取数据包,例如BluetoothGattCharacteristic#getIntValue