I am working on security related project,in that project currently i converted data to base64 format.But size of converted base64 data is more,for this purpose i want to convert a data to base128 format.How to Encode and Decode data in base128 string format in c#?
问问题
6476 次
1 回答
7
如果可以避免的话,我强烈建议不要使用 Base128 编码。7 位字母表必须包含不可打印的 ASCII 控制字符(代码点 0x20 下方只有 94 个可打印字符)。如果您尝试向它们提供此类数据,许多系统将会崩溃。为额外的一点节省的少量空间似乎真的不值得。ASCII85或Base91 之类的东西可以满足您的需求而不会让人头疼。有关类似问题,请参阅此SO帖子。
但是,如果您坚持不懈,那么您应该能够修改下面的映射字符串以获得您需要的内容。(注意:对于要添加到映射中的字符,您必须使用正确的不可打印代码,例如“\x09”):
public static string GetStringFromByteArray(byte[] data)
{
string mapping = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvqwxyz!#$%&()*+-;<=>?@^_`{|}~',./:[]\\\"";
BigInteger base10 = new BigInteger(data);
string baseX;
int base=mapping.Length;
var result = new Stack<char>();
do
{
result.Push(mapping[(int)(base10 % base)]);
base10 /= base;
} while (base10 != 0);
baseX = new string(result.ToArray());
return baseX;
}
于 2013-06-05T07:24:31.380 回答