nodejs écrire 64 bits entier non signé de la mémoire tampon

Je veux stocker un 64 bits (8 octets) entier à un nodejs tampon objet en big endian format.

Le problème à propos de cette tâche est de nodejs tampon prend uniquement en charge l'écriture des entiers 32 bits maximum (avec buf.write32UInt32BE(valeur de décalage)). Alors j'ai pensé, pourquoi ne pouvons-nous pas juste diviser le 64 bits entier?

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

Comme vous le voyez c'près des œuvres. Le problème est juste de fractionnement le 64 bits entier et de trouver les manquants 510 à lire. Quelqu'un voudrait-il l'esprit montrant les solutions à ces deux problèmes?

Depuis la dernière Node.js v12.0.0, vous pouvez maintenant utiliser buf.writeBigInt64BE

OriginalL'auteur bodokaiser | 2013-02-06