React-native:如何将字节数组(缓冲区数据)转换为Bit(二进制数据)

时间:2019-06-10 15:22:46

标签: javascript react-native bluetooth

我是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。

谢谢。

2 个答案:

答案 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
             );