我真正想做的是将DateTime.Now.Ticks转换为最短的字符串而不会丢失任何精度。这怎么可能?我们假设我们使用的是7位ASCII字符集。
答案 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
。您可以在两个类上使用相应的方法对其进行反转。