在向設(shè)備里寫入數(shù)據(jù)時,文檔說類型是ArrayBuffer類型,假如我要給設(shè)備發(fā)送一個彈窗指令,不知道該怎么寫這個ArrayBuffer類型的參數(shù)值,是像往常一樣直接發(fā)送一個number類型的數(shù)值或字符串,再把它轉(zhuǎn)成ArrayBuffer類型?這里理解起來有些困難,希望大神能解答一下,十分感謝。
網(wǎng)友回復(fù):
你好,這里可以參考一些javascript的相關(guān)文檔
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/DataView
我看過這個兩個文章,假如要像設(shè)備發(fā)送一個AABBCC字符串,是不是要先把"AABBCC"轉(zhuǎn)成base64, 再用
wx.base64ToArrayBuffer轉(zhuǎn)成arrayBuffer,以此作為wx.writeBLECharacteristicValue的參數(shù)??
這個應(yīng)該和 base64 字符串無關(guān), 微信提供 base64ToArrayBuffer 與 arrayBufferToBase64 兩個接口,只是方便開發(fā)者能夠比較直觀地調(diào)試返回的藍(lán)牙二進(jìn)制數(shù)據(jù)。
稍等,我讓其他同事來回答一下。
這里如果希望把字符串轉(zhuǎn)換成arrayBuffer,首先需要知道設(shè)備能識別的編碼格式。
以設(shè)備編碼格式為acsii碼為例,把AABBCC轉(zhuǎn)換成對應(yīng)的8位無符號整形數(shù)組是[65, 65, 66, 66, 67, 67]
那么剩下再把這個數(shù)組轉(zhuǎn)換為arrayBuffer即可
const strArray = [65, 65, 66, 66, 67, 67] const array = new Uint8Array(strArray.length) strArray.forEach((item, index) => array[index] = item) // arrayBuffer
|
好的,明白了,謝謝你們的解答