如何将一些文本可逆地压缩为更少的ASCII字符?

dan*_*dan 5 ruby algorithm

我想取一个任意的ASCII文本字符串,比如"Hello world",并将其压缩成一个字符较少的版本(尽可能少),但是它可以解压缩.压缩版本应仅由ascii字符组成.有没有办法实现这一点,尤其是在Ruby中?

Ric*_*iwi 8

如果您知道将只使用ASCII字符,那就是每个字节的7个低位.通过位操作,您可以将每8个字节混合为7个(节省12.5%).如果你可以将它放到一个较小的范围内(仅64个有效字符),你可以删除另一个字节.

但是,因为您希望压缩形式仅包含ASCII字符,所以会丢失一个字节 - 除非您的输入可以限制为64个字符(例如,有损压缩将某些字符替换为其他字符,仅存储在小写等).

如果你的字符串不是很大(> 1k),那么由于标题的大小,使用gzip/bzip2等可以节省很少的钱.如果您有一个预定义的字典用作Huffman表,您可能会得到一些压缩,但在其他情况下,可能会对原始文​​本产生膨胀.

关于SO 先前讨论一种用于短文本字符串的有效压缩算法

  • 我读到的问题是关于压缩文本,其中输出也是 7 位 ASCII。在这种情况下,删除高位不会起到压缩的作用。 (3认同)