我在android中实现了一个与设备通信的应用程序。该设备向我发送了一些数据,我必须解释它。
例如: 当它发送给我0x34时我必须进行一些操作,当0x35一些其他操作时继续。
当我必须比较一个字节时,我没有问题: 我做这样的事情:
if((byte[0]& 0xff)==0x34)
do something
else
do something else
但是当我必须解释这个字节的一部分时,存在一些问题。
例如:
从这个字节ALPHA中取B:| A(3bit)| B(5位)| 。为了以正确的方式做到这一点,我必须这样做:
B = (alpha&0xFF)>>3;
但为什么?
我认为正确的方法是:
mask = 0x07<<5;
B= alpha && mask
我哪里错了?
答案 0 :(得分:0)
BLE Core Spec使用Little Endian字节传输。
2.3数据包格式
所有参数都采用little-endian格式,即首先传输最低有效字节。
BluetoothGattCharacteristic类中有一些辅助方法可以帮助您读取数据包,例如BluetoothGattCharacteristic#getIntValue。