0

我想为数据存储选择一种编码方案。我的可用内存非常低。哪种编码应该最能最佳地利用可用空间。ANSI、UTF 或任何其他..

数据是大写字母

4

1 回答 1

1

如果你知道字母的频率分布,Huffman Coding在复杂性、速度和效率之间取得了很好的平衡。

如果您不知道字母的分布或者它们是随机的,则一次存储 5 位。例如,考虑字符串“ABCDE”。字母数字是 0, 1, 2, 3, 4。转换为二进制,这是:

00000 00001 00010 00011 00100

现在您只需将每 8 位分组为字节:

00000000 01000100 00110010 0xxxxxxx

您还需要存储长度,以便您知道最后一个字节的 7 位中没有有用的数据。

如果不关心代码空间并且您只想尽可能地打包字符串,您可以使用 Huffman 编码或算术编码,即使频率分布均匀,也可以将每个字符平均打包为 log2(26) 位,即略小于 5(即 4.7 位)。

于 2012-06-21T11:51:26.097 回答