Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to compress a string?

Tags:

I would like to have a reversible compression for a type of string so that i can include it in URLs without keeping track of what it refers to. The string i would like to compress is SVG path string, here is a short primer: http://apike.ca/prog_svg_paths.html

Basically, the string contains a character, followed by arbitrary number of integers, then another character followed by arbitrary number of integers and so on.

If anyone knows of a good resource for this, it would be much appreciated!

Jason

like image 335
FurtiveFelon Avatar asked Sep 04 '10 00:09

FurtiveFelon


People also ask

Can I compress a string?

"String Compression Algorithm” or “Run Length Encoding” happens when you compress a string, and the consecutive duplicates of each string are replaced with the character, followed by the consecutive, repeated character count.

How do I compress a string in Java?

Deflator is one of most used class for string compression in java. It uses the popular ZLIB compression library. It provides the function called deflator() to compress string. The function first takes the input string data, performs the compression and then fills the given buffer with the compressed data.

How do I compress a string in C++?

Compress String in C++ Suppose we have a string s, we have to eliminate consecutive duplicate characters from the given string and return it. So, if a list contains consecutive repeated characters, they should be replaced with a single copy of the character. The order of the elements will be same as before.


2 Answers

Many compression algorithms are well documented, a couple even have js implementations:

  • GZip A common (reasonably) good compression algorithm, I know there's a JS impl, i'm just hunting the URL

  • LZW Another question points to an LZW implementation in JS

  • Arithmetic coding (i did this, but the model it uses is stupid so doesn't achieve the best compression rates it could)

like image 57
olliej Avatar answered Oct 07 '22 23:10

olliej


Sounds like you might benefit from single and double RLE compression.

A primer on this can be seen here:

http://pp19dd.com/2011/10/query-string-limits-encoding-hundreds-of-checkboxes-with-rle/#demo

The library should be flexible enough to modify your compression pattern to something more preferable. The writeup explains how this works; might be a good start to optimize your SVG case.

like image 31
pp19dd Avatar answered Oct 07 '22 22:10

pp19dd