¿Por qué bit-buffer y búfer me dan salida diferente?

Estoy tratando de entender lo que está pasando con el siguiente código.

console.log(buffer); >>>  

Si convierto algunos de los decimales hexadecimales a binarios, obtengo los siguientes bits.

1101 0110 0001

Pero luego lo convierto a un flujo de bits ( https://github.com/inolen/bit-buffer ), y leo los bits.

 const test = new bitBuffer.BitStream(buffer); console.log(test.readBits(1, false)); console.log(test.readBits(1, false)); console.log(test.readBits(1, false)); console.log(test.readBits(1, false)); console.log(test.readBits(1, false)); console.log(test.readBits(1, false)); console.log(test.readBits(1, false)); console.log(test.readBits(1, false)); console.log(test.readBits(1, false)); console.log(test.readBits(1, false)); console.log(test.readBits(1, false)); console.log(test.readBits(1, false)); 

0110 1011 0110

¿Por qué estos bits no son exactos? ¿Se preguntaba si el hex de la memoria intermedia era simplemente la dirección del ram? Esperemos que alguien pueda aclararlo. 🙂

En primer lugar, los búferes no se agrupan en dígitos hexadecimales sino en octetos (bytes), por lo que debe colocar los bits en grupos de 8, no 4.

Cada uno de esos grupos simplemente se invierte. Esto se debe a que la representación legible por humanos es big-endian , y cuando lees el bit en el índice 0 es lo más correcto. Entonces, si los estás leyendo bit a bit de tu flujo, lees cada byte de derecha a izquierda.