根据这里的信息,我能够整理出以下内容:
import struct, datetime
def parse_thread_index(index):
s = index.decode('base64')
guid = struct.unpack('>IHHQ', s[6:22])
guid = '{%08X-%04X-%04X-%04X-%12X}' % (guid[0], guid[1], guid[2], (guid[3] >> 48) & 0xFFFF, guid[3] & 0xFFFFFFFFFFFF)
f = struct.unpack('>Q', s[:6] + '\0\0')[0]
ts = [datetime.datetime(1601, 1, 1) + datetime.timedelta(microseconds=f//10)]
for n in range(22, len(s), 5):
f = struct.unpack('>I', s[n:n+4])[0]
ts.append(ts[-1] + datetime.timedelta(microseconds=(f<<18)//10))
return guid, ts
给定一个线程索引,它返回一个元组(guid, [日期列表])
。对于您的测试数据,结果为:
> parse_thread_index('AdAOBz5QJ/JuQSJMQTmSQ8+dVs2IDgE4StZw')
('{27F26E41-224C-4139-9243-CF9D56CD880E}', [datetime.datetime(2014, 12, 2, 8, 9, 6, 673459), datetime.datetime(2014, 12, 8, 13, 11, 0, 807475)])
我手头没有足够的测试数据,所以这段代码可能会有错误。欢迎随时告诉我。