我需要構建一個基於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