如何在python中解压缩二进制格式的日期?

时间:2013-06-27 15:11:30

标签: python python-2.6 pack unpack

在数据库导出文件中,我有一个日期以二进制格式存储的列。 我正在尝试在文件中解压缩日期,以便“\ x07 \ xdb \ x0c \ x01”再次成为“01-12-2011”。

我知道十六进制值如何与其十进制对应值相对应,

0x07DB = 2011
0x0C = 12
0x01 = 01

但是如何正确解压这些格式化日期?

1 个答案:

答案 0 :(得分:2)

使用struct module将这些值解压缩为整数元组:

import struct
year, month, day = struct.unpack('>HBB', "\x07\xdb\x0c\x01")

>HBB格式说明符告诉struct期望以小端格式表示3个值,一个无符号短(一个2字节值,读取为整数)和无符号字符(1个字节值,读取作为整数)。

然后,如果需要,您可以将这些传递给datetime.date()以创建日期对象:

from datetime import date
import struct

somedate = date(*struct.unpack('>HBB', "\x07\xdb\x0c\x01"))

演示:

>>> import struct
>>> from datetime import date
>>> date(*struct.unpack('>HBB', "\x07\xdb\x0c\x01"))
datetime.date(2011, 12, 1)

或者您可以使用字符串格式:

>>> '{2:02d}-{1:02d}-{0}'.format(*struct.unpack('>HBB', "\x07\xdb\x0c\x01"))
'01-12-2011'

创建表示该日期的字符串。