将字符串编码到另一个具有更多字符的基础?

时间:2011-10-10 15:37:06

标签: string encoding compression base

我知道我可以encode numbers to a base like 65减少字符显示的大小(即使二进制数字较小)。

但是,有没有办法将UTF-8文本编码到另一个基数,其字符多于我们标准的26个字母的英文字母?换句话说,不需要4个“字符”作为单词“四” - 我可以只使用2(即“6 $”)创建一个表示或哈希?

2 个答案:

答案 0 :(得分:0)

我相信Base64的重点是你可以轻松地将任何二进制数据转换为“人类可读”的字母和数字。它可以轻松地将任意数据转录到新闻组或通过基于文本的协议传输它们。

如果要进一步“压缩”此数据,则需要确定要允许的字符数。只有8位的组合。最有效的方法是使用所有这些,在这种情况下为什么不使用gzip?

答案 1 :(得分:0)

您的问题似乎与Order-0熵编码有关: http://en.wikipedia.org/wiki/Entropy_encoding

最着名的算法是这个家族是霍夫曼编码: http://en.wikipedia.org/wiki/Huffman_coding

Huffman不仅会告诉你,只使用了64个字符,因此每个字符只需要6个字符:它也会在频繁字符(如空格)和稀有字符(如(;))之间产生差异。 。然后它将创建一个代码,其中频繁字符比稀有字符使用更少的位,从而产生更好的压缩(通常在英文文本上每个字符4.5位)。

霍夫曼编码是一种全面的压缩技术,用作许多压缩算法的一部分,包括zip。 你可以找到一个演示程序,它只在这里应用一次霍夫曼压缩(Huff0),它将帮助你确定使用这种技术为你的样本输入获得多少: http://fastcompression.blogspot.com/p/huff0-range0-entropy-coders.html