小编c0n*_*r3f的帖子

如何将负二进制数转换为int?

我想通过节点红色 modbus 节点从数据源读取数据。范围是 -20000 到 20000,但节点无法处理负数,所以我不得不将它们转换为二进制数 (DWORD),将它们拆分为低位和高位字,然后将这些字转换回整数。

var low

function dec2bin(dec){
    return (dec >>> 0).toString(2);
}

var a = msg.payload

if (a >= 0){

    a = dec2bin(a);
    a = parseInt(a,2);

} else {

    a = dec2bin(a);
    a = a.substr(16);
    a = parseInt(a,2);

} 

low = { payload: a };

return low;
Run Code Online (Sandbox Code Playgroud)

对于可视化,我想使用仪表板节点,但因此我需要将 2 个二进制字符串连接在一起并将它们转换为 int。

问题:

节点 red 将它们转换为 qword,因此二进制数 1111 1111 1111 1111 1111 1100 0001 1000 被视为 4.294.966.296?,而不是 -1000。但是,如果我用 1 个酸橙填充下一个剩余部分,那么: 1111 1111 1111 1111 1111 1111 1111 …

javascript node.js node-red modbus-tcp

6
推荐指数
1
解决办法
382
查看次数

标签 统计

javascript ×1

modbus-tcp ×1

node-red ×1

node.js ×1