首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nodejs缓冲区按位切片

Nodejs缓冲区按位切片
EN

Stack Overflow用户
提问于 2016-08-31 08:04:21
回答 2查看 2.4K关注 0票数 4

我正在通过蓝牙将数据从芯片传输到node.js服务器。

固件代码:

代码语言:javascript
复制
uint16_t txBuf[5]
top &= 0x3FF;
bottom &= 0x3FF;
txBuf[0] = top + (bottom << 10);
txBuf[1] = bottom >> 2;

基本上,前10位是顶部,下10位是底部。我可以在node.js中打印缓冲区:

代码语言:javascript
复制
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中解析它而不进行位操作?

EN

回答 2

Stack Overflow用户

发布于 2017-06-12 16:32:20

你可以使用新的Uint1Array "JavaScript's missing TypedArray“,它基本上是一个位字段,和其他类型的数组一样。

所以在你的例子中:

代码语言:javascript
复制
const Uint1Array = require('uint1array');
const bits = new Uint1Array( new Uint8Array(txBuf).buffer );
const top = bits.slice(0,10);
const bottom = bits.slice(10,20);
票数 2
EN

Stack Overflow用户

发布于 2016-08-31 08:13:55

不知道为什么你不想做比特操作。JavaScript可以很好地进行位操作。C位操作的东西可能甚至不需要改变,或者只需要很少的改变。

JavaScript类型的数组可能会加快速度。仔细检查Node版本并查看Buffer文档。他们有一些方法,如readUInt8等,可能会有所帮助。

你也可以像字符串一样操作比特,如果它更容易(如果它不是太慢的话),然后使用parseInt('01010101',2)转换成一个数字。也可以使用.toString(2)将其转换为二进制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39238826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档