Załóżmy, że mam strumień danych heksadecymalnych, który chcę podzielić na bloki 3-bajtowe, które muszę odczytać jako liczbę całkowitą.JavaScript: odczyt 3 bajtów Bufor jako liczba całkowita
Na przykład: dany łańcuch szesnastkowy 01be638119704d4b9a
Muszę przeczytać pierwsze trzy bajty 01be63
i odczytać je jako liczbę całkowitą 114275
. To jest to, co mam:
var sample = '01be638119704d4b9a';
var buffer = new Buffer(sample, 'hex');
var bufferChunk = buffer.slice(0, 3);
var decimal = bufferChunk.readUInt32BE(0);
W readUInt32BE
działa doskonale na danych 4 bajty, ale tu oczywiście dostać:
RangeError: index out of range
at checkOffset (buffer.js:494:11)
at Buffer.readUInt32BE (buffer.js:568:5)
Jak czytać 3 bajtów As Integer prawidłowo?
Dzięki! Musiałeś przeoczyć tę funkcję 'readUIntBE'. Działa idealnie. – kmachnicki
Aby zapisać kilka mikrosekund: var decimal = (((buffer [0] << 8) + (buffer [1]) << 8) + buffer [2]; –