2

外部设备定期向我发送我无法翻译的时间戳。具有以下格式:

31.12.2012 12:00:00 = 3B 3E C0 00

31.12.2012 12:00:01 = 3B 3E C0 01

31.12.2012 12:00:10 = 3B 3E C0 0A

31.12.2012 12:01:00 = 3B 3E C0 40

31.12.2012 13:00:00 = 3B 3E D0 00

31.12.2012 12:30:00 - 3B 3E C7 80 

31.12.2012 12:30:59 - 3B 3E C7 BB 

31.12.2012 12:44:59 - 3B 3E CB 3B 

31.12.2012 12:45:00 - 3B 3E CB 40

31.13.2013 12:30:00 - 3F 3E C7 80

我不知道这个时间戳是如何编码的,它不是常规的 unix 时间戳。看起来 LSB 包含秒数,但并不总是这样(与 比较12:00:10)。有人知道如何解决这个问题吗?

4

1 回答 1

4

我不明白 12:00:10 的例子有什么奇怪的,0x0A 等于 10。 12:01:00 的例子看起来有点奇怪:

12:01:00 3B 3E C0 40

二进制中的 40 是0100 0000- 我的猜测是最后 6 位是秒,这足以容纳 0-59。

为确保您必须提供不同分钟值的数据。

日期似乎也存储在部分字节中:

31 二进制是11111 12 二进制是1100

查看其他数据,我的最佳猜测是:

3B 3E C0 40 = 
0011 1011 0011 1110 1100 0000 1000 0000
yyyy yyMM MMdd dddh hhhh mmmm mmss ssss

001110(其余位)应该是年份,但该值是十进制的 14。最好等到明天,这样你就有了 2013 年的数据 :-)

于 2012-12-31T10:20:22.107 回答