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 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 (残りのビット) は年である必要がありますが、その値は 10 進数で 14 です。2013年のデータがあるので、明日まで待ってください:-)

于 2012-12-31T10:20:22.107 に答える