背景:有个蓝牙相关的小程序项目,需要向蓝牙设备写入数据,用到相关的知识,记录一下。
一、字符串转16进制字符串
// 字符串转16进制字符串
string2Hex(str) {
let val = ""
for (let i = 0; i < str.length; i++) {
if (val == "")
val = str.charCodeAt(i).toString(16)
else
val += str.charCodeAt(i).toString(16)
}
return val
}
二、16进制字符串转ArrayBuffer
// 16进制字符串转ArrayBuffer
hex2ArrayBuffer(hex_str) {
// let hex_str = 'AA5504B10000B5'
let typedArray = new Uint8Array(hex_str.match(/[\da-f]{2}/gi).map(function (h) {
return parseInt(h, 16)
}))
let buffer = typedArray.buffer
return buffer
}
三、ArrayBuffer转16进制字符串
// ArrayBuffer转16进制字符串
arrayBuffer2Hex(buffer) {
const hexArr = Array.prototype.map.call(
new Uint8Array(buffer),
function (bit) {
return ('00' + bit.toString(16)).slice(-2)
}
)
return hexArr.join('')
}
四、字符串转ArrayBuffer
// 字符串转ArrayBuffer
string2ArrayBuffer(str) {
// 首先将字符串转为16进制
let val = ""
for (let i = 0; i < str.length; i++) {
if (val === '') {
val = str.charCodeAt(i).toString(16)
} else {
val += ',' + str.charCodeAt(i).toString(16)
}
}
// 将16进制转化为ArrayBuffer
return new Uint8Array(val.match(/[\da-f]{2}/gi).map(function (h) {
return parseInt(h, 16)
})).buffer
}
记录于2022-01-05.