有没有关于将当前日期(包括毫秒)编码为尽可能短的字符串长度的想法或实现?
例如,我想要 31/10/2011 10:41:45 尽可能最短的字符串(最好是 5 个字符)- 显然是可解码的。
如果不能缩减到 5 个字符,则年份是可选的。
编辑:它实际上不需要可解码。它只需要是一个唯一的字符串。
最佳答案
time_t
是 31 位。最多 1000 毫秒添加 10 位:即 41 位。您需要 5 个字符:前 4 个字符占 8 位,最后一个字符占 9 位。
使用中文表意文字,您应该能够轻松找到第一个 4 个字符中每个字符的 256 个连续字符的范围和最后一个字符的 512 个连续字符的范围。
不用说,您的编码日期看起来...中文!但它应该可以解决问题;-)
顺便说一句,你不必拘泥于中文。您甚至可能想为每个字符选择不同的 Unicode 256 字符范围。当然,您会希望找到 256/512 个可打印 字符的序列。
现在假设我们跳过了这一年。我们减少到每年 86400 x 366 秒 = 31622400 秒。包括毫秒:31622400000。那是 35 位。太好了:每个字符减少了 7 位。简单的! :-)
关于c# - 日期时间编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7331802/