javascript - 如何在javascript中将原始数据转换为int32
问题描述
data = [0, 4, -109, -31]
我从 modbus那里得到这个,我知道这个data = 300001
,但我不知道如何正确转换它来得到那个300001
. 我已经尝试了很多网上找到的方法,但我没有得到它的工作。感谢您的任何帮助
编辑:据我所知0
,需要移动24
,4
移动16
,-109 (256-109 = 147)
所以它会147
并且需要移动,8
最后一个-31 (256-31 = 225)
我们按原样移动。这么快回顾一下data = [0, 4, 147, 225]
,0 * 2^24 + 4 * 2^16 + 147 * 2^8 + 225 = 300001
现在这需要编纂。在js中有什么合适的方法吗?
解决方案
您需要一个带有缓冲区的数据视图并设置字节
var data = [0, 4, -109, -31]
// Create a data view of a buffer
var view = new DataView(new ArrayBuffer(4));
// set bytes
data.forEach((v, i) => view.setInt8(i, v));
var num = view.getInt32(0);
console.log(num);
推荐阅读
- javascript - 工具提示正在与父级断开
- laravel - Laravel 顶级销售产品功能
- java - 为什么加入小缓冲图像的 Java 代码不起作用?
- reactjs - 为什么 React 将其错误引用到我的包而不是源映射(Webpack 5.44.8)?
- mysql - 将计算列添加到 MySQL 表 - 版本 5.6.51
- spring - 如何在带有 Kotlin 的 Spring RabbitMQ 中使用多个消费者绑定
- python - Python 使用 itertools 查找所有组合/排列(带替换)
- javascript - 如何从另一个对象构造父子关系对象
- flutter - Flutter Test:测试是否在构建时选中了复选框
- function - PLSQL 函数聚合选择循环