如果可以避免,我强烈建议不要使用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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4535 次 |
| 最近记录: |