Cómo leer un entero de 64 bits de un ArrayBuffer / DataView en JavaScript

Dado un little-endian de 64 bits (8 bytes)ArrayBuffer de bytes, ¿cómo podemos leer valores enteros de 64 bits en JavaScript?

Experimenté y se me ocurrió esto, pero ¿existe una solución más elegante dado queDataView aún no proporcionagetUint64()?

const bytes = new Uint8Array([ 0xff,0xff,0xff,0xff,   0xff,0xff,0xff,0xff ]);
//                             [-----  left  -----]   [----  right  ----] 

const view = new DataView(bytes.buffer);

// split 64-bit number into two 32-bit numbers
const left = view.getUint32(0, true);  // 4294967295
const right = view.getUint32(4, true); // 4294967295

// combine the 2 32-bit numbers using max 32-bit val 0xffffffff
const combined = left + 2**32*right;

console.log('combined', combined);
// 18,446,744,073,709,552,000  is returned Javascript for "combined"
// 18,446,744,073,709,551,615  is max uint64 value
// some precision is lost since JS doesn't support 64-bit ints, but it's close enough

Respuestas a la pregunta(1)

Su respuesta a la pregunta