Tengo una clase de PHP para leer datos binarios que estoy convirtiendo a NodeJS o buscando el equivalente de un par de funciones en NodeJS. Las funciones que me interesan en esta clase BinaryReader son ReadULong
y ReadUShort
. Creo que esto significa leer entero largo sin signo (4 bytes) y entero corto sin signo (2 bytes). Mientras trato de encontrar el equivalente para estos en NodeJS, me confundo sobre qué función usar entre estos:
buf.readUInt16LE(offset, [noAssert])
buf.readUInt16BE(offset, [noAssert])
buf.readUInt32LE(offset, [noAssert])
buf.readUInt32BE(offset, [noAssert])
¿Qué representaría LE
o BE
en este caso?
Los documentos de Buffer se encuentran aquí pero no pude encontrar una explicación para esos < a href="http://nodejs.org/api/buffer.html#buffer_buf_readuint32le_offset_noassert" rel="nofollow noreferrer">aquí.
También encontré una constante en la clase de PHP que dice const DEFAULT_BYTE_ORDER = 'L';
. ¿Es esto L
igual que L
en readUInt32LE
? ¿Todo esto tiene que ver con los pedidos de bytes?
Hasta ahora he leído estos artículos:
¡Si pudiera recibir un par de referencias más para leer sobre la lectura binaria, sería muy apreciado!
- Logan
SourceBE y LE significan big endian y little endian. En big endian, el byte más significativo se almacena en la dirección más pequeña y en little endian, el byte menos significativo se almacena en la dirección más pequeña. Dicho esto, endian indica el orden de los bytes. Puedes ver el patrón en uno de los ejemplos en la documentación:
var buf = new Buffer(2);
buf[0] = 0x3;
buf[1] = 0x4;
buf.readUInt16BE(0);
buf.readUInt16LE(0);
// 0x0304
// 0x0403