在 JavaScript 中将 uint8array 转换为 double

use*_*554 3 javascript arrays double uint8array

我有一个数组缓冲区,我想获取双精度值。例如,从 [64, -124, 12, 0, 0, 0, 0, 0] 我会得到 641.5

有任何想法吗?

Nin*_*olz 5

您可以改编TJ Crowder的出色答案并用于给定的字节。DataView#setUint8

var data =  [64, -124, 12, 0, 0, 0, 0, 0];

// Create a buffer
var buf = new ArrayBuffer(8);
// 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/native 64-bit double
var num = view.getFloat64(0);
// Done
console.log(num);
Run Code Online (Sandbox Code Playgroud)

对于多个数字,您可以取 8 块。

function getFloat(array) {
    var view = new DataView(new ArrayBuffer(8));
    array.forEach(function (b, i) {
        view.setUint8(i, b);
    });
    return view.getFloat64(0);
}

var data =  [64, -124, 12, 0, 0, 0, 0, 0, 64, -124, 12, 0, 0, 0, 0, 0],
    i = 0,
    result = [];

while (i < data.length) {
    result.push(getFloat(data.slice(i, i + 8)));
    i += 8;
}

console.log(result);
Run Code Online (Sandbox Code Playgroud)