如何将数字转换为任意基数?

时间:2010-01-08 08:45:52

标签: c# .net

我真正想做的是将DateTime.Now.Ticks转换为最短的字符串而不会丢失任何精度。这怎么可能?我们假设我们使用的是7位ASCII字符集。

2 个答案:

答案 0 :(得分:5)

如果只使用可打印的字符,则限制为32..127,因此这实际上是基数96.否则,基数为128.

要转换为基数96,请保持除以96.余数+ 32将是您前置到正在构建的字符串的字符。像这样:

  static string ConvertBase96 (long value) {
     string str = "";
     while (value > 0) {
        char rem = (char)((value % 96) + 32);
        str = rem.ToString () + str;
        value /= 96;
     }
     return str;
  }

答案 1 :(得分:4)

我会使用System.BitConverter将long转换为字节数组,然后System.Convert.ToBase64String。您可以在两个类上使用相应的方法对其进行反转。