JavaScript:读取8个字节到64位整数

bod*_*ser 5 javascript buffer byte integer node.js

我有一个包含8个字节的缓冲区对象.现在应将这八个字节解释为64位整数.

目前我使用以下算法:

var int = buff[0];

for (var i = 1; i < buff.length; i++) {
    int += (buff[i] * Math.pow(2, 8 * i));
}

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

这有效,但我相信有更好的方法(也许使用Uint64Array).

不幸的是我无法找到Uint16Array如何帮助我.

问候

更新:

// puts two 32bit integers to one 64bit integer
var bufInt = (buf.readUInt32BE(0) << 8) + buf.readUInt32BE(4);
Run Code Online (Sandbox Code Playgroud)

Aln*_*tak 7

Javascript不支持64位整数,因为本机数字类型是64位双精度,只给出53位整数范围.

您可以创建32位数字的数组(即Uint32Array),但如果存在64位版本的数组,则无法将值复制到独立变量中.