我是React Native的新手,我使用蓝牙设备开发应用程序,因此,蓝牙设备发送了数据,而我的应用程序则在缓冲区中接收了这些数据,
我的问题是
如何以二进制格式转换此缓冲区数据?然后在此二进制数据之后转换为十进制。
请检查下面的代码。
bleManagerEmitter.addListener(
"BleManagerDidUpdateValueForCharacteristic",
({ value, peripheral, characteristic, service }) => {
// Buffer data return from Bluetooth device
const buffer = Buffer.from(value);
console.lgo("buffer >> "+buffer) //[161,52]
return dispatch({
type: BLUETOOTH_TYPE.READ_DATA,
weight: sensorData
});
}
);
听力缓冲区数据类似于[161,52],如何转换为二进制格式?然后如何将该二进制数据转换为十进制?
[161,52]的输出为306。
谢谢。
答案 0 :(得分:0)
缓冲区是二进制格式。您可以从数字中得出不同的数字,具体取决于其编写方式。
如果是浮点型,则可以使用buffer.readFloatBE()
或.readFloatLE()
。如果是双值-.readDoubleBE()
或.readDoubleLE()
。
您可以在https://nodejs.org/api/buffer.html#buffer_buf_readdoublebe_offset
处了解所有类型。答案 1 :(得分:0)
最终我找到了解决办法,
我的设备正在以字节数组形式返回数据,因此我想读取它(在缓冲区中捕获)并以二进制格式转换,最后将此二进制数据转换为十进制值。
const buffer = Buffer.from(deviceResponseInByteArray);
const byteToBit = buffer.readUInt16BE(0).toString(2);
const batteryPowerInBinary = byteToBit.substring(2, 3);
const weightInBinary = byteToBit.substring(4);
var weightInDecimal = parseInt(weightInBinary, 2).toString(
10
);