javascript - 在 Node-Red 中将位转换为字节
问题描述
我是 JavaScript 新手,我使用 Node-Red 从数据库读取写入。
我从数据库中收到一个包含 8 个数字输入状态的对象。每个输入都表示为一个位。
我正在寻找一种将每个位组合成一个字节的方法。
这是我从数据库收到的对象:
array[1]
0: object
idx: 10
ts: "2018-11-21T06:12:45.000Z"
in_0: 1
in_1: 1
in_2: 1
in_3: 1
in_4: 1
in_5: 1
in_6: 1
in_7: 1
in_x 表示输入位置。
我想收到一个代表每个单字节组合的字节。
例如:
in0:0,in1:1,in2:0,in3:0,in4:0,in5:1,in6:0,in7:0,
输出字节将为:00100001 二进制转换为字节为 33
有什么建议么?
提前致谢。
解决方案
以下代码按您的要求工作*:
var output =
arr[0].in_0 +
(arr[0].in_1 << 1) +
(arr[0].in_2 << 2) +
(arr[0].in_3 << 3) +
(arr[0].in_4 << 4) +
(arr[0].in_5 << 5) +
(arr[0].in_6 << 6) +
(arr[0].in_7 << 7);
这段代码假定每个变量只能是 1 或 0。任何其他都将导致废话。
我使用了左位移运算符 (<<)来获得每个 on 位的 2 的幂。
您已指定 in_7 是最高有效位。如果它实际上是最低有效位,则反转 in_x 变量的顺序。
*结果不是一个字节,但它确实包含我认为您期望的数字。
推荐阅读
- python - 使用 excel 工作表而不是带有 pandas 的 csv 有什么缺点?
- c++ - sfml 在 defaultVeiw 上放了一个 sf::View
- java - 不断总结用户输入 - JAVA
- c# - 不能隐式转换类型 Threading.Tasks.Task
> 建模 - python - 如何在python中的行尾添加一个字符串
- wordpress - 在 wordpress 中查询博客文章的子集,类似于在 squarespace 示例中的查询(有效)
- oauth - OAuth 2,0 令牌端点
- r - 为 ggplot() 中的所有 y 轴元素提供图例,其中在单个图形中使用了条、点和线
- java - OnBackpressed Fragment 事务不起作用,但应用程序关闭
- node.js - 如何使用 node.js 检索 mongoDB 中节点内的数组?