我知道我可以将数字编码到一个像65这样的基地来减小字符显示的大小(即使二进制数较小)。
然而,,是否有一种方法可以将UTF-8文本编码到比我们标准的26个字母英语字母还要多的另一个基础上呢?换句话说,,而不是要求单词“4”需要4个“字符”--我可以只使用2(即“6美元”)创建一个表示或散列?
发布于 2011-10-10 15:43:37
我相信Base64的要点是,您可以轻松地将任何二进制数据转换为“人类可读的”字母和数字。它使得将任意数据转录到新闻组或通过基于文本的协议传输数据变得非常容易。
如果要进一步“压缩”这些数据,则需要计算出要允许多少个字符。只有这么多8位的组合。最有效的方法是全部使用,在这种情况下,为什么不使用gzip呢?
发布于 2011-10-11 17:36:00
您的问题似乎与顺序-0熵编码有关:编码
最著名的算法是这个家族是Huffman编码:编码
Huffman不仅会告诉您只使用了64个字符,因此每个字符只需要6位:它还可以区分频繁字符(空格)和罕见字符(例如(;) )。然后,它将创建一个代码,其中频繁字符使用的位数比较少的字符少,因此压缩效果更好(通常每个字符在英文文本中为4.5位)。
Huffman编码是一种全面的压缩技术,作为包括zip在内的许多压缩算法的一部分.您可以在这里找到一个只应用一次Huffman压缩(Huff0)的演示程序,它将帮助您确定将这种技术用于示例输入可以获得多少收益:http://fastcompression.blogspot.com/p/huff0-range0-entropy-coders.html。
https://stackoverflow.com/questions/7715234
复制相似问题