我有一个包含八个字节的缓冲区对象。这八个字节现在应该被解释为 64 位整数。
目前我使用以下算法:
var int = buff[0];
for (var i = 1; i < buff.length; i++) {
int += (buff[i] * Math.pow(2, 8 * i));
}
console.log(int);
这可行,但我相信有更好的方法(也许使用 Uint64Array)。
不幸的是,我找不到 Uint16Array 如何帮助我。
问候
更新:
// puts two 32bit integers to one 64bit integer
var bufInt = (buf.readUInt32BE(0) << 8) + buf.readUInt32BE(4);
最佳答案
Javascript 不支持 64 位整数,因为 native 数字类型是 64 位 double ,仅提供 53 位整数范围。
您可以创建 32 位数字的数组(即 Uint32Array
),但如果有 64 位版本的数组,则无法将其值复制到独立变量中。
关于JavaScript:读取 8 字节到 64 位整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14200071/