2013.05.23 20:35:00 08014273ed2071a6800017
2013.05.23 21:45:00 08014273ed246cf0000017
2013.05.24 17:10:00 08014273ed675173000017
2013.05.25 01:10:00 08014273ed82900f000017
2013.05.25 02:15:00 08014273ed8667b3800017
2013.05.25 17:15:00 08014273edb9c78e800017
2013.05.25 19:55:00 08014273edc2ee93000017
2013.05.25 20:30:00 08014273edc52a5a000017
2013.05.29 06:25:00 08014273eede5079000017
2013.05.29 06:35:00 08014273eedeac45000017
2013.05.29 06:40:00 08014273eedf09c6800017
2013.05.30 21:40:00 08014273ef64b021800017
第一和第二个是我对事件的观察(我没有确切的时间在几分钟和几秒钟内),也可能在我所在的时区。第三列是十六进制值,我怀疑这是本次演示。
目前,我假设
08
和17
只是分隔符。 我一直在寻找时间戳记表示形式和日期时间,但目前没有成功。
你猜怎么回事?
PS进行了一些完整的更新不同的日期。我也会尝试找到更早的日期。感谢您的帮助
2013.01.01 00:50:00 08014273bf2ba0ed000017
2012.12.15 03:25:00 08014273b9bbb8cd000017
#1 楼
第三列中的数字确实会随着时间增加,这是一个好的开始。让我们检查连续行上数字之间的差异,以查看级数是否为线性:#!/usr/bin/env python
import re, sys, time
lines = sys.stdin.readlines()
def parse(l): return time.mktime(map(int,l[0:6]) + [0]*3), int(l[6], 16)
stamps = [parse(re.split('[\n.: ]+',line)) for line in lines]
print lines[0][:20]
for i in xrange(1,len(stamps)):
(t1,x1) = stamps[i]
(t0,x0) = stamps[i-1]
print "%s %8d %18d %12d" % (lines[i][:20], t1-t0, x1-x0, (x1-x0)/(t1-t0))
输出:
进展实际上基本上是线性的,最高的比率对应于不确定性相对较大的最短间隔。日期,月份或年份的变化没有明显的变化,因此该数字可能直接是时间单位,而不是列中的年-月-日-时-分-秒。
该速率接近纳秒,但实际上接近每秒10.48亿滴答。
很明显所有的差都是1000的倍数。让我们用十进制打印十六进制数:
2012.12.15 03:25:00
2013.01.01 00:50:00 1459500 1530417643520000 1048590368
2013.05.23 20:35:00 12339900 12935551254528000 1048270346
2013.05.23 21:45:00 4200 4377804800000 1042334476
2013.05.24 17:10:00 69900 73549217792000 1052206263
2013.05.25 01:10:00 28800 29955719168000 1040129137
2013.05.25 02:15:00 3900 4224712704000 1083259667
2013.05.25 17:15:00 54000 56486789120000 1046051650
2013.05.25 19:55:00 9600 10063183872000 1048248320
2013.05.25 20:30:00 2100 2455764992000 1169411900
2013.05.29 06:25:00 294900 309126496256000 1048241764
2013.05.29 06:35:00 600 394264576000 657107626
2013.05.29 06:40:00 300 401604608000 1338682026
2013.05.30 21:40:00 140400 146949537792000 1046649129
639
并不引人注目,在前面的数字中我也看不到任何模式。不过,似乎数据在某些时候是由连接十进制数字构建的。还记得每秒接近10.48亿的间隔吗?由于最后3个十进制数字可能不是时间的一部分,因此我们必须将此数字除以1000。结果非常接近每秒2 ^ 20份。因此,数据在某些时候看起来已经以十进制组合,而在其他时候已经以十六进制组合了!让我们将十六进制数除以1000,但以十六进制打印:
9677354747411355314159639
9677354748941772957679639
9677354761877324212207639
9677354761881702017007639
9677354761955251234799639
9677354761985206953967639
9677354761989431666671639
9677354762045918455791639
9677354762055981639663639
9677354762058437404655639
9677354762367563900911639
9677354762367958165487639
9677354762368359770095639
9677354762515309307887639
输出:
for (l,s) in zip(lines, stamps): t = (s[1] - 639) / 1000; print l[:20], s[0], hex(t)
那些最后5个十六进制数字是常数。这是左侧的下一部分,大致相当于某个时期以来的秒数。剥离左侧的一些数字应产生纪元,困难是要知道剥离多少个十六进制数字和剥离多少个十进制数字。我找不到漂亮的时代。
#2 楼
跟进Gilles的答案,前7个十六进制数字(0801427)和后5个(00017)不属于时间戳。剩余的时间是从2004年11月4日开始的毫秒数。如果将其转换为日期,则会得到5月或1个小时的时间。那可能是夏令时。我不知道为什么会有这样的时代。可能是生成时间戳的任何版本的发布日期。
评论
您还可以提供一些完全不相关的日期吗?再说一个2012年(可能是1月还是6月?)。嗯不应该因为“太本地化”而关闭?
可能有,但这根本没有帮助。这不仅仅是我在这里的答案,引导人们使用它的方式可能对其他人也有帮助。