我需要构建一个基于NodeJS服务器的原型来读取工业modbus数据。在JavaScript中将两个16位数组合并转换为一个32位数(浮点数)
我读我提供一个阵列,两个条目两个连续的16位小数寄存器:
// eg transaction = [ 17007, -2621 ]
或// eg transaction = [ 17007, 0000 ]
此值应转化为电频率,约=〜60.00(HZ)(至少它应该如果我给出的数据是正确的)
我知道我需要两个寄存器值数组中结合和转换数据要么32位浮点..但如何:
一)如何将它们组合起来而不用将它们铸造为一些他们不
二)如何将它们隐蔽到32位浮点
我想我需要使用某种类型的parseInt()
然后toString(10)
- 一个建议是,将每个使用parseInt(num, 10).toString(16)
为十六进制,然后再转换是加入十六进制到一个字符串或可能浮动使用parseFloat()
但又是如何首先加入两个单独的部分。
我还没有找到解决方案,令人惊讶的。
(我不熟悉modbus;如果这应该从上下文中显而易见,请原谅)。我不太清楚你想如何组合这些值。原始值是带符号的16位整数,并且您希望基本连接它们的位并获得生成的32位有符号整数?如果它们没有签名,那可能就像'(firstValue << 16)| secondValue';理想情况下,可以避免任何字符串转换。你能提供一个期望的输入/输出对的例子吗? –
我实际上是在寻找concat的float。我期待60.00 ...或其他非常接近的东西。 (频率不会超过一位或两位小数) –
它是否真的为您提供'Array'?提交他们应该使用'Uint16Array'的错误。 – Bergi