2017-03-09 19 views
1

我試圖將4個字節的數組轉換爲浮點值。這裏是東西:JavaScript將4個字節的數組轉換爲來自modbusTCP的浮點值讀取

我從通過MODBUSTCP我的請求得到答案,這看起來是這樣的:

{ "data": [ 16610, 40202 ], "buffer": { "type": "Buffer", "data": [ 64, 226, 157, 10 ] } } 

這個字符串轉換成JSON對象,解析和訪問與

var ModbusArray = JSON.parse(msg.payload); 
var dataArray = ModbusArray.buffer.data; 

(在msg.payload來自節點紅色)

直到在這裏找到工作。該數組表示一個浮點值。在這種情況下,它應該是大約7.0的值。

所以,這裏是我的問題:我怎麼能從這個dataArray獲得一個浮點數?

回答

1

您可以修改T.J. Crowder的優秀answer,並使用DataView#setUint8作爲給定的字節。

var data = [64, 226, 157, 10]; 
 

 
// Create a buffer 
 
var buf = new ArrayBuffer(4); 
 
// Create a data view of it 
 
var view = new DataView(buf); 
 

 
// set bytes 
 
data.forEach(function (b, i) { 
 
    view.setUint8(i, b); 
 
}); 
 

 
// Read the bits as a float; note that by doing this, we're implicitly 
 
// converting it from a 32-bit float into JavaScript's native 64-bit double 
 
var num = view.getFloat32(0); 
 
// Done 
 
console.log(num);

+0

謝謝!奇蹟般有效 –

相關問題