java msb / lsb in ble communication

时间:2015-08-23 14:46:36

标签: java android byte endianness

我在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

我哪里错了?

1 个答案:

答案 0 :(得分:0)

BLE Core Spec使用Little Endian字节传输。

  

2.3数据包格式

     

所有参数都采用little-endian格式,即首先传输最低有效字节。

BluetoothGattCharacteristic类中有一些辅助方法可以帮助您读取数据包,例如BluetoothGattCharacteristic#getIntValue