2012-06-21 57 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位)。