如何在 javascript 中将原始数据转换为 int32

how to convert raw data to int32 in javascript

我从 modbus 得到这个 data = [0, 4, -109, -31] 并且我知道这个 data = 300001 但我不知道如何正确地转换它以获得那个 300001。 我尝试了很多网上找到的方法,但我没有得到它的工作。 感谢您的帮助

编辑: 据我了解,0 需要移动 244 移动 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中有什么正确的方法吗?

您可以对数字进行位移和求和:

data =  [0, 4, -109, -31]

console.log( data[0] << 24 || data[1] << 16 || data[2] << 8 || data[1]);

您需要一个带缓冲区的数据视图并设置字节

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