使用Python转换六个十六进制八位字节的日期时间戳

2 投票
4 回答
1830 浏览
提问于 2025-04-16 11:10

我需要用Python把一个由六个十六进制数字组成的时间戳转换成普通的日期时间格式,但我找不到简单的方法。现在我正在解析一些杀毒软件的日志,需要把日期时间的值转换成看起来像正常日期的格式。

比如说:200A13080122应该转换成“2002年11月19日,上午8:01:34”。

这是我需要处理的格式:

这个时间戳由六个十六进制数字组成,它们分别代表:

第一个数字:自1970年以来的年数

第二个数字:月份,1月=0

第三个数字:日期

第四个数字:小时

第五个数字:分钟

第六个数字:秒

例如,200A13080122表示的是2002年11月19日,上午8:01:34。

感谢任何帮助,

4 个回答

0
import datetime
def h(i):
    return int(i,16)
s = '200A13080122'
date = datetime.datetime(h(s[0:2]) + 1970, h(s[2:4]) + 1, h(s[4:6]), h(s[6:8]), h(s[8:10]), h(s[10:12]))

因为你说你需要把它转换成“看起来像普通日期的东西”,所以我就这样展示了...

0
import datetime
dt = "200A13080122"
y, M, d, h, m, s = (int(o[0]+o[1], 16) for o in zip(dt[::2],dt[1::2]))
date = datetime.datetime(y+1970, M+1, d, h, m, s)
print date.strftime("%B %d, %Y, %I:%M:%S %p")

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。

2
import binascii, calendar
Y,M,D,h,m,s = map(ord, binascii.a2b_hex("200A13080122"))
ampm = "AM"
if h >= 12:
    h = h-12
    ampm = "PM"
if h == 0:
    h = 12
print "%s %d, %d, %d:%d:%d %s" % (calendar.month_name[M+1], D, 1970+Y, 
                                  h, m, s, ampm)

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答