2012-06-21 27 views
0

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

数据是资本Alphabetics

+2

嗯,**会存储什么?** – deceze

+0

字母字符A-Z –

+0

您是否考虑过使用5位字符集,如果您只想要英文字母的大写字母? –

回答

1

如果你知道字母的频率分布,Huffman Coding是复杂性,速度和效率之间的良好平衡。

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

00000 00001 00010 00011 00100 

现在你只要组每8位为一个字节:

00000000 01000100 00110010 0xxxxxxx 

你需要存储因此你知道在最后一个字节的7位中没有有用的数据。

如果不考虑代码空间,并且只是想要打包字符串,那么即使采用统一的频率分布,也可以使用霍夫曼编码或算术编码将每个字符打包到log2(26)位上平均值,略小于5(即4.7位)。