【发布时间】:2015-06-26 14:24:13
【问题描述】:
我正在寻找一种通用算法,它可以在定义的字符集上对给定的字符串进行编码/解码,该字符设置为/来自字节数组。它必须使用最小的空间。
我开始开发我的,这是一种从 Base'n' 到 Base 2 的算法,但我认为类似的东西一定已经开发出来了。
我需要使用已知的受限字符集以最小位数编码字符串。也许我应该使用 bzip2?
编辑:我的字符串长度最大为 160 个字符。如果需要,我可以填充它们。
Edit2:我必须知道最坏情况的位数。
byte[] encode(string charset, string value)
string decode(string charset, byte[] encodedValue)
用法:
string myString = "HELLO WORLD";
string charSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ "; // Base 27
byte[] encodedString = encode(charset, myString); // Base 27 -> Base 2
Debug.Assert(myString.Equals(decode(charset, encodedString))); // Base 2 -> Base 27
【问题讨论】:
-
查找霍夫曼编码
-
Here 有一个 base-n 转换器。执行
Encoding.UTF8.GetBytes(myString)并将结果传递给那里编写的方法。
标签: c# string encoding compression text-compression