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

seb*_*a23 2 javascript data-conversion

data = [0, 4, -109, -31]从 modbus得到这个,我知道这一点,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中做到这一点吗?

Nin*_*olz 5

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

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);
Run Code Online (Sandbox Code Playgroud)