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

问题描述 投票:2回答:2

我从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中完成?

javascript data-conversion
2个回答
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);

2
投票

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

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

console.log( data[0] << 24 || data[1] << 16 || data[2] << 8 || data[1]);
© www.soinside.com 2019 - 2024. All rights reserved.