试图找出二进制日期格式

时间:2014-02-14 18:25:36

标签: datetime binary-data

我一直试图将这种二进制日期格式解码一段时间,但考虑到我之前从未做过那种事情,我遇到了一些麻烦。我知道哪些字节代表了日期,我知道每个输出应该是什么,但我仍然很难在这里使用。

 Unsigned 8bit Int -       Result
----------------------------------------
                   - YYYY-MM-DD hh:mm:ss
65 208 247 254 128 - 2014-02-01 00:00:00
65 208 247 254 143 - 2014-02-01 00:01:00
65 208 247 254 158 - 2014-02-01 00:02:00
65 208 247 254 173 - 2014-02-01 00:03:00
65 208 247 254 188 - 2014-02-01 00:04:00
65 208 247 254 203 - ...
65 208 247 254 218
65 208 247 254 233
65 208 247 254 248
65 208 247 255 7
65 208 247 255 22
65 208 247 255 37
65 208 247 255 52
65 208 247 255 67
65 208 247 255 82
65 208 247 255 97
65 208 247 255 112
65 208 247 255 127
65 208 247 255 142
65 208 247 255 157
65 208 247 255 172
65 208 247 255 187
65 208 247 255 202
65 208 247 255 217
65 208 247 255 232
65 208 247 255 247
65 208 248 0 6
65 208 248 0 21
65 208 248 0 36
65 208 248 0 51
65 208 248 0 66
65 208 248 0 81
65 208 248 0 96
65 208 248 0 111
65 208 248 0 126
65 208 248 0 141
65 208 248 0 156
65 208 248 0 171
65 208 248 0 186
65 208 248 0 201
65 208 248 0 216
65 208 248 0 231
65 208 248 0 246
65 208 248 1 5
65 208 248 1 20
65 208 248 1 35
65 208 248 1 50
65 208 248 1 65
65 208 248 1 80
65 208 248 1 95
65 208 248 1 110
65 208 248 1 125
65 208 248 1 140
65 208 248 1 155
65 208 248 1 170
65 208 248 1 185
65 208 248 1 200
65 208 248 1 215
65 208 248 1 230
65 208 248 1 245
65 208 248 2 4
65 208 248 2 19
65 208 248 2 34
65 208 248 2 49
65 208 248 2 64
65 208 248 2 79
65 208 248 2 94
65 208 248 2 109
65 208 248 2 124
65 208 248 2 139
65 208 248 2 154
65 208 248 2 169
65 208 248 2 184
65 208 248 2 199
65 208 248 2 214
65 208 248 2 229
65 208 248 2 244
65 208 248 3 3
65 208 248 3 18
65 208 248 3 33
65 208 248 3 48
65 208 248 3 63
65 208 248 3 78
65 208 248 3 93
65 208 248 3 108
65 208 248 3 123
65 208 248 3 138
65 208 248 3 153
65 208 248 3 168
65 208 248 3 183
65 208 248 3 198
65 208 248 3 213
65 208 248 3 228
65 208 248 3 243
65 208 248 4 2
65 208 248 4 17
65 208 248 4 32
65 208 248 4 47
65 208 248 4 62
65 208 248 4 77

我实际上颠倒了这些字节。它们最初是按照最不重要的顺序存储的(也就是先秒),但我想让它与输出相匹配一点,所以我颠倒了顺序。此外,总有3个尾随0(如果没有反转则为领先)。因为我知道数据以1分钟为增量存储日期,所以我省略了这些0。我假设至少有一个零表示秒。可能是另一个0表示毫秒,因为与所讨论的日期相对应的数据相隔1/2秒。然而,由于它以1分钟的增量(120个数据点)聚集,我不确定它真的很重要。我只使用000作为每分钟的停止信号。

话虽如此,这里是未触及的原始数据以及前面提到的0:

0 0 0 128 254 247 208 65
0 0 0 143 254 247 208 65
0 0 0 158 254 247 208 65
0 0 0 173 254 247 208 65
0 0 0 188 254 247 208 65
0 0 0 203 254 247 208 65
0 0 0 218 254 247 208 65
0 0 0 233 254 247 208 65
0 0 0 248 254 247 208 65
0 0 0 7 255 247 208 65
0 0 0 22 255 247 208 65
0 0 0 37 255 247 208 65
0 0 0 52 255 247 208 65
0 0 0 67 255 247 208 65
0 0 0 82 255 247 208 65
0 0 0 97 255 247 208 65
0 0 0 112 255 247 208 65
0 0 0 127 255 247 208 65
0 0 0 142 255 247 208 65
0 0 0 157 255 247 208 65
0 0 0 172 255 247 208 65
0 0 0 187 255 247 208 65
0 0 0 202 255 247 208 65
0 0 0 217 255 247 208 65
0 0 0 232 255 247 208 65
0 0 0 247 255 247 208 65
0 0 0 6 0 248 208 65
0 0 0 21 0 248 208 65
0 0 0 36 0 248 208 65
0 0 0 51 0 248 208 65
0 0 0 66 0 248 208 65
0 0 0 81 0 248 208 65
0 0 0 96 0 248 208 65
0 0 0 111 0 248 208 65
0 0 0 126 0 248 208 65
0 0 0 141 0 248 208 65
0 0 0 156 0 248 208 65
0 0 0 171 0 248 208 65
0 0 0 186 0 248 208 65
0 0 0 201 0 248 208 65
0 0 0 216 0 248 208 65
0 0 0 231 0 248 208 65
0 0 0 246 0 248 208 65
0 0 0 5 1 248 208 65
0 0 0 20 1 248 208 65
0 0 0 35 1 248 208 65
0 0 0 50 1 248 208 65
0 0 0 65 1 248 208 65
0 0 0 80 1 248 208 65
0 0 0 95 1 248 208 65
0 0 0 110 1 248 208 65
0 0 0 125 1 248 208 65
0 0 0 140 1 248 208 65
0 0 0 155 1 248 208 65
0 0 0 170 1 248 208 65
0 0 0 185 1 248 208 65
0 0 0 200 1 248 208 65
0 0 0 215 1 248 208 65
0 0 0 230 1 248 208 65
0 0 0 245 1 248 208 65
0 0 0 4 2 248 208 65
0 0 0 19 2 248 208 65
0 0 0 34 2 248 208 65
0 0 0 49 2 248 208 65
0 0 0 64 2 248 208 65
0 0 0 79 2 248 208 65
0 0 0 94 2 248 208 65
0 0 0 109 2 248 208 65
0 0 0 124 2 248 208 65
0 0 0 139 2 248 208 65
0 0 0 154 2 248 208 65
0 0 0 169 2 248 208 65
0 0 0 184 2 248 208 65
0 0 0 199 2 248 208 65
0 0 0 214 2 248 208 65
0 0 0 229 2 248 208 65
0 0 0 244 2 248 208 65
0 0 0 3 3 248 208 65
0 0 0 18 3 248 208 65
0 0 0 33 3 248 208 65
0 0 0 48 3 248 208 65
0 0 0 63 3 248 208 65
0 0 0 78 3 248 208 65
0 0 0 93 3 248 208 65
0 0 0 108 3 248 208 65
0 0 0 123 3 248 208 65
0 0 0 138 3 248 208 65
0 0 0 153 3 248 208 65
0 0 0 168 3 248 208 65
0 0 0 183 3 248 208 65
0 0 0 198 3 248 208 65
0 0 0 213 3 248 208 65
0 0 0 228 3 248 208 65
0 0 0 243 3 248 208 65
0 0 0 2 4 248 208 65
0 0 0 17 4 248 208 65
0 0 0 32 4 248 208 65
0 0 0 47 4 248 208 65
0 0 0 62 4 248 208 65
0 0 0 77 4 248 208 65

似乎每个字节都不代表自己的时间单位(例如,秒,分钟),因为那时我会期望一些一致性(即0分钟始终是相同的值)。所以我假设他们都应该被视为一个整体。肯定是“从某个日期开始的秒数”格式。我真的不知道该怎么做。

考虑到我看到一个模式,我觉得这会非常简单。我应该采取什么样的方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

取决于时间值来自何处,它可能是Unix时间,即1970年1月1日以来的秒数。大多数平台都有库将其转换为人类可读时间,没有实际时间的编码或二进制中的日期 - 它实际上是一个计数器。

在这里阅读更多内容:

http://en.wikipedia.org/wiki/Unix_time