从字节数组

时间:2015-11-11 13:40:35

标签: java android

在我的Android应用程序中,我从大小为8字节的传感器数据中收到 通过蓝牙智能使用Android BluetoothGatt。数据包含温度,压力和湿度值。这些值按以下方式分割。

压力: 字节1 +字节2 +字节3的前4位,其他4位是0

温度: 字节4 +字节5 +字节6的前4位,其他4位是0

湿度: 字节7 +字节8

现在我有一个包含8字节的字节数组。

我的问题是我不知道如何提取或隔离如上所述的温度,压力和湿度的位。 有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您需要使用位操作操作来提取值。

例如

int pressure = (byte[0]&0xff)<<16+(byte[1]&0xff)<<8+(byte[2]&0xff)

(16和8可能需要12和4或0 4和12,具体取决于它的含义)。

您需要的操作是&lt;&lt; ,它会移动字节内的位和&amp; 0xff ,它会将您的签名字节更改为有符号整数接班。否则符号位会弄乱。