NodeJS - v8.serializer.writeUint64() 方法



v8.serializer 类的 NodeJS v8.serializer.writeUnit64() 方法用于将原始 64 位无符号整数写入内部缓冲区。64 位无符号整数将分为高 32 位和低 32 位部分。

Unit64 是一个 64 位无符号整数,最小值为 0,最大值为 18,446,744,073,709,551,615 (2^64)-1(含)。

此方法主要在用于编写某种宿主对象的自定义 serializer._writeHostObject() 内部使用。

语法

以下是NodeJS v8.serializer.writeUnit64()方法的语法 -


 v8.serializer.writeUint64(high, low)

参数

此方法接受两个参数。下面将对此进行描述。

  • high − 将在内部缓冲区中写入的 64 位整数中的较高 32 位。
  • low - 将在内部缓冲区中写入的 64 位整数中较低的 32 位。

返回值

此方法返回 undefined,而是将传递的值(原始 64 位整数)写入内部缓冲区。

在以下示例中,我们尝试使用 NodeJS v8.serializer.writeUnit64() 方法将原始 64 位无符号整数写入内部缓冲区。


const v8 = require('v8');
const serializer = new v8.Serializer();
console.log(serializer.writeUint64(1234, 5678));

输出

正如我们在下面的输出中看到的,NodeJS writeUnit64() 方法返回 undefined,它将传递的值写入内部缓冲区。

undefined

在下面的示例中,我们尝试将一个 64 位无符号整数写入内部缓冲区,该整数将分为高位和低位 32 位部分。


const v8 = require('v8');
const serializer = new v8.Serializer();
console.log(serializer.releaseBuffer());
serializer.writeUint64(123, 567);
console.log(serializer.releaseBuffer());

输出

<Buffer >
<Buffer b7 84 80 80 b0 0f>

如果我们将多个 64 位无符号整数写入内部缓冲区,则整数将连续相加。


const v8 = require('v8');
const serializer = new v8.Serializer();
console.log(serializer.releaseBuffer());
serializer.writeUint64(12, 56);
serializer.writeUint64(34, 78);
console.log(serializer.releaseBuffer());

输出

<Buffer >
<Buffer b8 80 80 80 c0 01 ce 80 80 80 a0 04>