将时间戳编码为最少的字符数

Gui*_*rme 5 c logic encoding

我需要创建一个条形码,其中包含时间戳(包括年、月、日、小时和分钟)等数据。考虑到代码长度有限,我需要这个时间戳尽可能短。

我的想法是获取 UNIX 时间戳,除以 60(删除“秒”数据),然后将其转换为十六进制。例子:

  • 当前时间戳:1401546126
  • 删除秒数:1401546126 / 60 = 23359102
  • 转换为十六进制:0x1646E7E
  • 打印到条形码的字符串:1646E7E

这样我就可以从 10 个字符增加到 7 个字符。我还考虑使用不同的基数,例如基数 36,这只能产生 5 个字符。

有没有更好的方法来做到这一点,这可能会导致条形码中的字符更少?除了转换为更高的基数之外,还有其他方法可以解决此问题吗?

小智 5

定义您想要支持的最短时间并计算自该时间以来的分钟数,并按照您的建议删除秒数。在代码支持的基数中对该值进行编码,例如代码 39 的基数 43。该代码中的 5 个字符允许您表示近 280 年的时间跨度(43^5 分钟)。