如何从此类中取出字节值?

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 以便能够获取值并对其进行操作。谢谢老兄。 好的。您可以在收到它的地方应用上述实现,如果不需要其余数据,则只能提取并发送。 啊,怎么发送?这是我有点困惑的部分。我无法访问其他班级的数据。

以上是关于如何从此类中取出字节值?的主要内容,如果未能解决你的问题,请参考以下文章

java 读取byte[] 指定字节

如何通过分析字节模式来确定音频流类型

for循环每次取出一个字符(不是字节)

c# 处理某些占4个字节的汉字问题

如何将 outputStream 转换为字节数组?

如何判断数据的每个字节的状态(0/1)