【问题标题】:how to convert raw data to int32 in javascript如何在javascript中将原始数据转换为int32
【发布时间】:2020-02-04 10:26:03
【问题描述】:

我从 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


    【解决方案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);

    【讨论】:

      【解决方案2】:

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

      data =  [0, 4, -109, -31]
      
      console.log( data[0] << 24 || data[1] << 16 || data[2] << 8 || data[1]);
      

      【讨论】:

      • 为了清楚起见,您可以使用| 而不是+。毕竟字节应该占据 32 位整数中的互斥位。
      猜你喜欢
      • 2016-12-18
      • 2023-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      • 2014-07-24
      • 1970-01-01
      • 2015-08-20
      相关资源
      最近更新 更多