将多个uint8和uint16组合成1个字节的数组

时间:2014-08-28 04:32:47

标签: java android bluetooth

我是java编程的新手,我正在尝试为Android(4.3 +)开发蓝牙低功耗(4.0)健身设备。我从不同的硬件制造商处购买了一堆不同的设备进行测试,其中一条向设备发送值的说明如下:

Characteristic Fitness Goals
size: 8 bytes    
D0 D1 D2 D3 D4 D5 D6 D7

D0: number of days in month, uint8_t   
D1 D2: distance walked , uint16_t
D3 D4: distance ran, uint16_t
D5 D6: steps taken, uint16_t
D7: number of users, uint8_t

问题在于:

我需要将5个int值放入将写入设备的字节数组中。 以这些值为例:

16 (# days in month)
450 (distance walked)
334 (distance ran)
800 (steps taken)
4 (number of users)

我不确定如何获取这些不同的uint8_t和uint16_t值并将它们放入一个字节数组以便写入蓝牙设备。谁能告诉我这是怎么做到的?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以按如下方式使用ByteBuffer

ByteBuffer buf = ByteBuffer.allocate(8);

// Depending on the device you may need to include the following line
// buf.order(ByteOrder.LITTLE_ENDIAN);

buf.put((byte)16); // (# days in month)
buf.putShort(450); // (distance walked)
buf.putShort(334); // (distance ran)
buf.putShort(800); // (steps taken)
buf.put((byte)4);  // (number of users)

byte[] byteArray = buf.array();