我想以大端格式将 64 位(8 字节)大整数存储到 nodejs 缓冲区对象。
关于这个任务的问题是 nodejs 缓冲区只支持写入 32 位整数作为最大值(使用 buf.write32UInt32BE(value, offset))。所以我想,为什么我们不能只拆分 64 位整数呢?
var buf = new Buffer(8);
buf.fill(0) // clear all bytes of the buffer
console.log(buf); // outputs <Buffer 00 00 00 00 00 00 00 00>
var int = 0xffff; // as dezimal: 65535
buf.write32UInt32BE(0xff, 4); // right the first part of the int
console.log(buf); // outputs <Buffer 00 00 00 00 00 00 00 ff>
buf.write32UInt32BE(0xff, 0); // right the second part of the int
console.log(buf); // outputs <Buffer 00 00 00 ff 00 00 00 ff>
var bufInt = buf.read32UInt32BE(0) * buf.read32UInt32BE(4);
console.log(bufInt); // outputs 65025
如您所见,这几乎可以正常工作。问题只是拆分 64 位整数并在读取它时找到丢失的 510。有人介意展示这两个问题的解决方案吗?