我想为数据存储选择一种编码方案。我的可用内存非常低。哪种编码应该最佳地利用可用空间。 ANSI,UTF或任何其他..
数据是Capital Alphabetics
答案 0 :(得分: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位)。