小程序蓝牙通信数据定义?

需要发送16字节的ArrayBuffer,那么,比如说06 01 01 01 01...等等,是像我那样用十六进制定义每一位么?

const typedArray new Unit8Array(16)
typedArray[0] = 0x06 ??? 十六进制么?
0  1    2   3   4  5 6 7   8 9 10 11 12 13 14 15
-----------------------------------------------
06  01  01  01  TOKEN[4]   FILL[8]
阅读 2k
1 个回答

可以这样初始化数组:


const typedArray = new Uint8Array(16)
typedArray[0] = 0x06
typedArray[1] = 0x01
typedArray[2] = 0x01
typedArray[3] = 0x01
  console.log(typedArray);

image.png
typedArray 数组的 0 到 15 共计 16 个元素,分别代表了要发送的 16 个字节。

也可以直接传入一个十六进制字符串,并将其转换为二进制数组:

const hexStr = '06010101ff' // 按字节顺序排列的十六进制字符串
const byteArr = hexStr.match(/.{2}/g).map(hex => {
return parseInt(hex, 16)
})
const typedArray2 = new Uint8Array(byteArr)
console.log(typedArray2);

image.png
这样只需要一行代码就可以完成数组的初始化

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题