我需要一个库/工具/函数,将50-60字符长的字符串压缩为较小的字符串。
你知道吗?
答案 0 :(得分:5)
这种规模的有效压缩将很困难。您可以考虑Huffman coding。这可能会给你比gzip更小的压缩(因为它会产生二进制代码而不是base-85序列)。
答案 1 :(得分:1)
该框架包括GZipStream
和DeflateStream
类。但这可能不是你想要的 - 什么输入字符串必须被压缩?仅限ASCII?只有信件?字母数字字符串?完整的Unicode?什么是允许的输出字符串?
从算法的角度来看,如果没有进一步了解可能输入的空间,我建议使用arithmetic coding。与Huffman coding相比,这可能会使压缩大小缩小几个额外的位,因为它不限于每个符号的整数位数 - 这在处理这些小输入时会变得很重要。
答案 2 :(得分:1)
您是否正在考虑加密哈希?例如,可以在输入字符串上使用SHA-1(http://en.wikipedia.org/wiki/SHA-1)来生成20字节的摘要。当然,摘要总是20个字节 - 即使输入字符串短于20个字节。
答案 3 :(得分:1)
如果你的字符串只包含a-z和0-9之间的小写字符,你可以用7位编码。
这会将60个字符串压缩为53个字节。如果你不需要数字,你可以使用6比特,将其减少到45个字节。
因此,选择正确的压缩方法取决于字符串包含的数据。
答案 4 :(得分:0)
答案 5 :(得分:0)
我会使用一些基本的类似RLE或基于共享字典的压缩,然后使用block cipher来保持大小不变。
也许smaz对你来说也很有趣。
基本压缩算法示例:
分组密码的示例(“bit twiddlers”):
您可以使用维基百科(上面的链接)找出满足您需求的内容。