我需要创建一个条形码,其中包含除其他数据外的时间戳,包括年、月、日、小时和分钟。鉴于代码的长度有限,我需要这个时间戳尽可能短。
我的想法是获取 UNIX 时间戳,除以 60(删除“秒”数据),然后将其转换为十六进制。示例:
- 当前时间戳:1401546126
- 去掉秒数:1401546126/60 = 23359102
- 转换为十六进制:0x1646E7E
- 打印到条码的字符串:1646E7E
这样我可以从 10 个字符变成 7 个字符。我还考虑过使用不同的基数,比如基数 36,它只能得到 5 个字符。
是否有更好的方法可以使条形码中的字符更少?除了转换为更高的基数之外,还有其他方法可以解决这个问题吗?
最佳答案
定义您想要支持的最短时间,并按照您的建议计算自该时间以来的分钟数,并减少秒数。在代码支持的基础中对该值进行编码,例如代码 39 以 43 为基数。该代码中的 5 个字符允许您表示将近 280 年(43^5 分钟)的时间跨度。
关于c - 将时间戳编码为最少的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23971448/