Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

90
Visualizações
Descompresión de matriz de bytes comprimida con LZ4 en JavaScript

Estoy tratando de descomprimir una matriz de bytes en JavaScript con lz4 . Traté de implementar el ejemplo en la página npmjs. Ya tengo los datos en formato comprimido, por lo que volver a comprimirlos genera resultados no deseados. Yo he tratado:

 var input = Buffer.from(this.bytes); var output = Buffer.alloc( lz4.encodeBound(input.length) ); var uncompressed = Buffer.alloc(input.length); var uncompressedSize = lz4.decodeBlock(output, uncompressed); uncompressed = uncompressed.slice(0, uncompressedSize); console.log( "uncompressed data", uncompressed);

Lo que conduce a una matriz de 0. He confirmado que los datos que paso (this.bytes) son una matriz válida de bytes. Ej: [f1,09,01,54,00,00,00,00,46,00,00,00,53,07,00,00,00,6f,66,66,73,65,74,58,4e,00,01,00,f1,35,2a,c0,53,08,00,00,00,69,74,65,6d,49,63,6f,6e,53,1f,00,00,00,57,65,61,70,6f,6e,45,6e,63,68,61,6e,74,6d,65,6e,74,5f,53,70,65,61,72,30,32,5f,4c,61,72,67,65,53,0b,00,00,00,53,63,72,65,65,6e,57,69,64,74,68,4e,49,00,55,00,9e,40,53,06,5f,00,01,73,00,f1,04,02,00,00,00,53,01,00]

Agradecería cualquier ayuda o sugerencia.

Editar: he intentado decodificar directamente la matriz de bytes:

 console.log(LZ4.decode(this.bytes.join("")));

Esto lleva a este error:

 Uncaught (in promise) Error: Invalid magic number: 39303166 @0 emit_Error http://localhost:8080/javascripts/lz4.min.js:8 read_MagicNumber http://localhost:8080/javascripts/lz4.min.js:8 _main http://localhost:8080/javascripts/lz4.min.js:8 _transform http://localhost:8080/javascripts/lz4.min.js:8 _read http://localhost:8080/javascripts/lz4.min.js:8 _write http://localhost:8080/javascripts/lz4.min.js:8 b http://localhost:8080/javascripts/lz4.min.js:8 s http://localhost:8080/javascripts/lz4.min.js:8 write http://localhost:8080/javascripts/lz4.min.js:8 end http://localhost:8080/javascripts/lz4.min.js:8 LZ4_uncompress http://localhost:8080/javascripts/lz4.min.js:8 construct http://localhost:8080/javascripts/readSaveFile.js:194

Al investigar este problema, me encontré con este problema. No pude encontrar la función lz4.createDecoderStream.prototype.uncompressBlock Luego probé un ejemplo del repositorio node-lz4 github:

 var compressed = Buffer.from(this.lua_state); var uncompressedBlock = Buffer.alloc(compressed.length*10); var n = LZ4.decodeBlock(compressed, uncompressedBlock); uncompressedBlock = uncompressedBlock.slice(0,n); console.log(uncompressedBlock);

Lo que devuelve, lo adivinaste, una matriz de 0. Estoy completamente atascado en este momento y nuevamente agradezco cualquier ayuda.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

El problema era que mi matriz de entrada no era una matriz de enteros, así que la convertí en una UInt8Array con esta función:

 function convert_byte_array_to_int_array(array) { let output_array = []; array.forEach(byte => { output_array.push(parseInt(byte, 16)); }); return output_array; }

Y lo usé en el ejemplo del paquete así:

 var input = convert_byte_array_to_int_array(this.bytes); console.log(input); var uncompressed = Buffer.alloc(input.length); var uncompressedSize = LZ4.decodeBlock(input, uncompressed); uncompressed = uncompressed.slice(0, uncompressedSize); console.log( "uncompressed data", uncompressed );

Los datos sin comprimir que se enviaron a la consola eran los datos que estaba buscando. Gracias por tu ayuda.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda