未知的时间戳格式

时间:2012-12-31 10:13:49

标签: c++ timestamp

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

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比较)。 有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分: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年的数据: - )