Saltar al contenido

Compresión de cadenas en JavaScript

Nuestros mejores programadores agotaron sus depósitos de café, en su búsqueda todo el tiempo por la resolución, hasta que Manuel encontró la respuesta en GitLab por lo tanto en este momento la compartimos aquí.

Solución:

Acabo de lanzar una pequeña implementación de LZW especialmente diseñada para este mismo propósito, ya que ninguna de las implementaciones existentes satisfizo mis necesidades.

  • Aquí está la página de inicio del proyecto.

  • Aquí hay un enlace a una demostración que lo compara con LZMA nivel 1

Eso es lo que estoy usando en el futuro, y probablemente intentaré mejorar la biblioteca en algún momento.

Aquí están las funciones de codificación (276 bytes, función en) y decodificación (191 bytes, función de) que modifiqué desde LZW en una demostración completamente funcional. No existe una rutina más pequeña o más rápida disponible en Internet que la que te estoy dando aquí.

function en(c)var x='charCodeAt',b,e=,f=c.split(""),d=[],a=f[0],g=256;for(b=1;ba?d[b]:e[a]?e[a]:f+c,g.push(a),c=a.charAt(0),e[o]=f+c,o++,f=a;return g.join("")

var compressed=en("http://www.ScriptCompress.com - Simple Packer/Minify/Compress JavaScript Minify, Fixify & Prettify 75 JS Obfuscators In 1 App 25 JS Compressors (Gzip, Bzip, LZMA, etc) PHP, HTML & JS Packers In 1 App PHP Source Code Packers Text Packer HTML Packer or v2 or v3 or LZW Twitter Compress or More Words DNA & Base64 Packer (freq tool) or v2 JS JavaScript Code Golfer Encode Between Quotes Decode Almost Anything Password Protect Scripts HTML Minifier v2 or Encoder or Escaper CSS Minifier or Compressor v2 SVG Image Shrinker HTML To: SVG or SVGZ (Gzipped) HTML To: PNG or v2 2015 JS Packer v2 v3 Embedded File Generator Extreme Packer or version 2 Our Blog DemoScene JS Packer Basic JS Packer or New Version Asciify JavaScript Escape JavaScript Characters UnPacker Packed JS JavaScript Minify/Uglify Text Splitter/Chunker Twitter, Use More Characters Base64 Drag 'n Drop Redirect URL DataURI Get Words Repeated LZMA Archiver ZIP Read/Extract/Make BEAUTIFIER & CODE FIXER WHAK-A-SCRIPT JAVASCRIPT MANGLER 30 STRING ENCODERS CONVERTERS, ENCRYPTION & ENCODERS 43 Byte 1px GIF Generator Steganography PNG Generator WEB APPS VIA DATAURL OLD VERSION OF WHAK PAKr Fun Text Encrypt Our Google");
var decompressed=de(compressed);

document.writeln('
'+compressed+'

'+compressed.length+' characters versus original '+decompressed.length+' characters.


'+decompressed+'
');

A mí no me parece razonable comprimir un string usando UTF-8 como destino… Parece que solo está buscando problemas. Creo que sería mejor perder algo de compresión y usar ASCII simple de 7 bits como destino.

En una demostración de JavaScript de juguete de 4 KB que escribí por diversión, utilicé una codificación para el resultado de la compresión que almacena cuatro bytes binarios en cinco caracteres elegidos de un subconjunto de ASCII de 85 caracteres que está limpio para incrustarse en un JavaScript string (85 ^ 5 es un poco más que 8 ^ 4, pero aún se ajusta a la precisión de los enteros de JavaScript). Esto hace que los datos comprimidos sean seguros, por ejemplo, para JSON sin necesidad de escapar.

Comentarios y valoraciones del post

Si crees que te ha sido provechoso nuestro post, sería de mucha ayuda si lo compartes con otros programadores y nos ayudes a dar difusión a nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *