如何从此类中取出字节值?
Posted
技术标签:
【中文标题】如何从此类中取出字节值?【英文标题】:How do I take the byte value out of this class? 【发布时间】:2016-11-16 08:35:48 【问题描述】:我想从这个类中取出字节值以便我可以解析它,或者如果可以在里面解析它并取出第 5 和第 6 字节值。
private void broadcastUpdate(final String action,
final BluetoothGattCharacteristic characteristic)
final Intent intent = new Intent(action);
// This is special handling for the Heart Rate Measurement profile. Data parsing is
// carried out as per profile specifications:
// http://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.heart_rate_measurement.xml
if (UUID_HEART_RATE_MEASUREMENT.equals(characteristic.getUuid()))
final byte[] data = characteristic.getValue();
if (data != null && data.length > 0)
final StringBuilder stringBuilder = new StringBuilder(data.length);
for(byte byteChar : data)
stringBuilder.append(String.format("%02X", byteChar));
intent.putExtra(EXTRA_DATA, new String(data) + "\n" + stringBuilder.toString());
else
// For all other profiles, writes the data formatted in HEX.
sendBroadcast(intent);
它的工作原理是我踩到秤上,它会向我发送这些字节:
00 00 00 00 02 02 00 00 00 00 00 00 00 00 00 00
它存储在变量“数据”中。如何取出“数据”以用于其他课程?
重量数据在字节 5 和 6 上。如果您转换字节 5 和 6 的十六进制值,在该示例中为 '0202
',它将变为十进制的 514 (51.4kg)。
我需要将字节数据用于另一个类来获取 kg 数据。我该怎么做呢?
【问题讨论】:
data[5]*256+data[6]
?如果要将其转换为浮点(kg)值double weight = (data[5]*256+data[6])/10.0
?
是的,我明白了。但是,我需要从类中获取字节数据(存储在变量“数据”中)才能使用它。我是通过意图或其他方式猜测的,我不太确定。谢谢。
【参考方案1】:
您可以简单地获取这两个字节并在下面应用:
int result = ByteBuffer.wrap(bytes).getInt();
如果您想了解更多信息:HERE1、HERE 2
【讨论】:
我可以通过另一个类访问“结果”吗? 嗯,好的。还有一个问题。我看到您似乎正在使用 android 的意图。在那种情况下,您是在谈论另一个活动而不是另一个课程吗? 哦,那是分开的。例如,我想将结果的值传递给另一个类。喜欢调用 result 以便能够获取值并对其进行操作。谢谢老兄。 好的。您可以在收到它的地方应用上述实现,如果不需要其余数据,则只能提取并发送。 啊,怎么发送?这是我有点困惑的部分。我无法访问其他班级的数据。以上是关于如何从此类中取出字节值?的主要内容,如果未能解决你的问题,请参考以下文章