NodeJS - v8.deserializer.readUint64() 方法



v8.deserializer 类的 NodeJS v8.deserializer.readUint64() 方法用于读取原始的 64 位无符号整数,并将其作为数组返回,其高低值如下:[hi, lo]。

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

我们将原始的 64 位整数值写入内部缓冲区(使用 writeUnit64() 方法),方法是将它们分成高低 32 位整数。因此,在读取(使用 readUnit64() 方法)时,hi 和 lo 都将包含 32 位无符号整数。如果 no 值写为 lo,则 readWrite() 方法将读取并将其返回为 0。

语法

以下是NodeJS v8.deserializer.readUint64()方法的语法 -


 v8.deserializer.readUint64()

参数

此方法不接受任何参数。

返回值

此方法读取一个原始的 64 位无符号整数,并以数组 [hi, lo] 的形式返回它,其中包含两个 32 位无符号整数条目。

在以下示例中,我们尝试使用 serializer.writeUnit64() 方法将原始 64 位无符号整数写入内部缓冲区。然后我们尝试使用 deserializer.readUint64() 方法读取并返回内部缓冲区中存在的反序列化 64 位无符号整数。


const v8 = require('v8');

// Initializing the serializer object
const serializer = new v8.Serializer();

// Writing a 64-bit integer value to the internal buffer
serializer.writeUint64(3412, 87578);

// Initializing the deserializer object
const deserializer = new v8.Deserializer(serializer.releaseBuffer());
console.log(deserializer.readUint64());

输出

[ 3412, 87578 ]

在此示例中,我们使用 serializer.writeUint64() 方法将原始 64 位无符号整数写入内部缓冲区,并使用 serializer.releaseBuffer() 返回序列化的内部缓冲区。

然后,我们使用 deserializer.readUint64() 方法读取并返回内部缓冲区中存在的反序列化 64 位。


const v8 = require('v8');

// Initializing the serializer object
const serializer = new v8.Serializer();
let buffer;

// Writing a 64-bit integer value to the internal buffer
writeUint64 = (lo, hi) => {
	 	serializer.writeUint64(lo, hi)
	 	buffer = serializer.releaseBuffer()
	 	console.log(buffer)
	 	readUint64(buffer)
	 	console.log("----------------------------------")
}

readUint64 = (buffer) => {
	 	const deserializer = new v8.Deserializer(buffer);
	 	console.log(deserializer.readUint64(buffer));
}
writeUint64(45875, 09878)
writeUint64(42134, 2431)

输出

<Buffer 96 cd 80 80 b0 e6 2c>
[ 45875, 9878 ]
----------------------------------
<Buffer ff 92 80 80 e0 92 29>
[ 42134, 2431 ]
----------------------------------

如果没有值作为 lo 参数传递,readUnit64() 方法将读取并将其返回为 0。


const v8 = require('v8');

// Initializing the serializer object
const serializer = new v8.Serializer();
let buffer;

// Writing a 64-bit integer value to the internal buffer
writeUint64 = (lo, hi) => {
	 	serializer.writeUint64(lo, hi)
	 	buffer = serializer.releaseBuffer()
	 	console.log(buffer)
	 	readUint64(buffer)
	 	console.log("----------------------------------")
}

readUint64 = (buffer) => {
	 	const deserializer = new v8.Deserializer(buffer);
	 	console.log(deserializer.readUint64(buffer));
}
writeUint64(1456)
writeUint64(0998)

输出

<Buffer 80 80 80 80 80 b6 01>
[ 1456, 0 ]
----------------------------------
<Buffer 80 80 80 80 e0 7c>
[ 998, 0 ]
----------------------------------