1

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#?

4

1 回答 1

7

如果可以避免的话,我强烈建议不要使用 Base128 编码。7 位字母表必须包含不可打印的 ASCII 控制字符(代码点 0x20 下方只有 94 个可打印字符)。如果您尝试向它们提供此类数据,许多系统将会崩溃。为额外的一点节省的少量空间似乎真的不值得。ASCII85Base91 之类的东西可以满足您的需求而不会让人头疼。有关类似问题,请参阅此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 回答