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

标签 c encoding logic

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

我的想法是获取 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/

相关文章:

javascript - 如果找到没有字符串匹配则执行代码

c++ - matPutVariable: error (matrix::serialize::WrongSize) 试图输出数据到mat文件

c - 关于位对齐

c++ - 将 itoa 与 TCHAR 一起使用

java - Android Studio SDK 路径包含重音符号

javascript - 理解这个返回逻辑

c - 确定采样音频的时间戳

python - swig numpy 多矩阵和数组输入

perl - 使用 Perl 解码 URI 相关实体

logic - Coall/直觉逻辑中的forall和existive之间是否存在这种关系?