2015-05-09 73 views
1

我有幾個簡短的utf16字符串,我需要壓縮(每個大約20-200字符長)。壓縮unicode(utf16)字符串的短緩衝區

該字符串幾乎總是使用英文字符和數字創建的。

我大概可以自己寫一些壓縮文件,其中大約有50%的結果。

尋找一個想法/實現。

使用C#林

+1

我可以將它轉換爲UTF8並實現接近50%的壓縮... :-) – xanatos

+0

問題是,你想用這些字符串壓縮一次嗎?一個壓縮的字符串或一個轉換爲UTF8的字符串是一個'byte []',所以對它的工作不太好。您可以保存它,加載它並傳輸它。 – xanatos

+0

你可以看到http://stackoverflow.com/a/7343623/613130是你想要的。 .NET的字符串是UTF16字符串。 – xanatos

回答

1
  1. 使用UTF-8。它給你你要求的50%。
  2. 通過利用這些字節的幾乎所有高位在英文文本中都爲零的事實,您可以輕鬆實現更多功能。
  3. 然後,您可以應用共享的預先計算的霍夫曼樹來利用字母分佈。
  4. 對於很長的字符串(比如> 100個字符),我可以想象使用Deflate或類似的東西開始變得有效。轉換爲UTF-8後,我會使用Deflate。
  5. 如果你願意使用共享字典,你可以實現更多的壓縮。該字典需要預先計算並與整個語料庫共享。