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

时间:2014-05-31 14:58:03

标签: c encoding logic

我需要创建一个条形码,其中包含一个时间戳,包括年,月,日,小时和分钟。鉴于代码长度有限,我需要这个时间戳尽可能短。

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

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

这样我可以从10个字符到7个字符。我还想过使用不同的基数,比如基数36,它只能产生5个字符。

有没有更好的方法,这可能会导致条形码中的字符更少?除了转换到更高的基础之外,还有其他方法解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

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