Diciamo che ho un flusso di dati esadecimale, che voglio dividere in blocchi di 3 byte che ho bisogno di leggere come numero intero.JavaScript: lettura di 3 byte Buffer come intero
Ad esempio: data una stringa esadecimale 01be638119704d4b9a
Ho bisogno di leggere i primi tre byte 01be63
e leggerlo come numero intero 114275
. Questo è quello che ho ottenuto:
var sample = '01be638119704d4b9a';
var buffer = new Buffer(sample, 'hex');
var bufferChunk = buffer.slice(0, 3);
var decimal = bufferChunk.readUInt32BE(0);
I readUInt32BE
funziona perfettamente per i dati di 4 byte, ma qui ovviamente ottenere:
RangeError: index out of range
at checkOffset (buffer.js:494:11)
at Buffer.readUInt32BE (buffer.js:568:5)
Come faccio a leggere 3-byte come numero intero in modo corretto?
Grazie! Deve essersi persa la funzione 'readUIntBE'. Funziona perfettamente. – kmachnicki
Per salvare alcuni microsecondi: var decimal = (((buffer [0] << 8) + (buffer [1]) << 8) + buffer [2]; –