收藏
回答

请问如何获取蓝牙广播的数据?

如图所示,我该怎么获取图中的21字节数据?

而且图中的数据是转换为10进制后的,如果有16进制的就更好了。

请各位大佬指导一下

回答关注问题邀请回答
收藏

2 个回答

  • Wei
    Wei
    2024-06-04

    advertisData是一个ArrayBuffer数据类型,你.ArrayBuffer肯定未定义啊;下面都是同理的问题

    2024-06-04
    有用 1
    回复 3
    • 爱心雨
      爱心雨
      2024-06-04
      advertisData我打印出来包含了一堆东西,并不是一个数组或者字符串啊,我想要的就是收到的数组或者十六进制字符串,请问一下该如何获取
      2024-06-04
      回复
    • Wei
      Wei
      2024-06-04回复爱心雨
      Array.from(new Uint8Array(advertisData))
      2024-06-04
      回复
    • 爱心雨
      爱心雨
      2024-06-04回复Wei
      非常感谢,你的方法是可以的
      2024-06-04
      回复
  • 风清雾散云开见日出
    风清雾散云开见日出
    2024-06-04

    // ArrayBuffer转16进制字符串示例

    function ab2hex(buffer) {

        let hexArr = Array.prototype.map.call(

          new Uint8Array(buffer),

          function(bit) {

            return return ('00' + bit.toString(16)).slice(-2)

          }

        )

        return hexArr.join('');

    }

    2024-06-04
    有用
    回复 3
    • 爱心雨
      爱心雨
      2024-06-04
      嗯,我看到例程里面有这个函数,现在是我连原始数据都获取不到。。。
      2024-06-04
      回复
    • 风清雾散云开见日出
      风清雾散云开见日出
      2024-06-04回复爱心雨
      案例不是告诉你了吗,你这个devices[0].advertisData值打印是空吗
      2024-06-04
      回复
    • 爱心雨
      爱心雨
      2024-06-04回复风清雾散云开见日出
      这种方法打印的话是未定义,当前设备只有一个,如果打印devices.advertisData的话,就是一个类一样的存在,里面包含了很多属性,也有[[Uint8Array]]这个里面是我需要的数据,但是无法取出。二楼的朋友提供了一种方法是可行的
      2024-06-04
      回复
登录 后发表内容