我正在通过蓝牙将数据从芯片传输到node.js服务器。
固件代码:
uint16_t txBuf[5]
top &= 0x3FF;
bottom &= 0x3FF;
txBuf[0] = top + (bottom << 10);
txBuf[1] = bottom >> 2;基本上,前10位是顶部,下10位是底部。我可以在node.js中打印缓冲区:
console.log(buffer)
console.log(buffer.data)
<Buffer cd d3 8d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00>
20我如何才能在javascript和node.js中解析它而不进行位操作?
发布于 2017-06-12 16:32:20
你可以使用新的Uint1Array "JavaScript's missing TypedArray“,它基本上是一个位字段,和其他类型的数组一样。
所以在你的例子中:
const Uint1Array = require('uint1array');
const bits = new Uint1Array( new Uint8Array(txBuf).buffer );
const top = bits.slice(0,10);
const bottom = bits.slice(10,20);发布于 2016-08-31 08:13:55
不知道为什么你不想做比特操作。JavaScript可以很好地进行位操作。C位操作的东西可能甚至不需要改变,或者只需要很少的改变。
JavaScript类型的数组可能会加快速度。仔细检查Node版本并查看Buffer文档。他们有一些方法,如readUInt8等,可能会有所帮助。
你也可以像字符串一样操作比特,如果它更容易(如果它不是太慢的话),然后使用parseInt('01010101',2)转换成一个数字。也可以使用.toString(2)将其转换为二进制。
https://stackoverflow.com/questions/39238826
复制相似问题