How to compress a string?

2019-01-23 04:25发布

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

3条回答
不美不萌又怎样
2楼-- · 2019-01-23 04:41

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)

查看更多
趁早两清
3楼-- · 2019-01-23 04:48

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.

查看更多
走好不送
4楼-- · 2019-01-23 04:55

You could try Huffman compression. Number of different chars is 20-30, and if the string is long, compression should be effective.

查看更多
登录 后发表回答