2013-06-27 3 views
0

데이터베이스 내보내기 파일에서 이진 형식으로 저장된 날짜 가진 열이 있습니다. "\ x07 \ xdb \ x0c \ x01"이 "01-12-2011"이되도록 파일에서 날짜의 압축을 풀려고합니다.파이썬에서 이진 형식의 날짜를 푸는 방법?

내가 16 진수 값이 진수 대응에 corresspond 방법을 알고,

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

하지만 어떻게 제대로 이러한 형식의 날짜를 풀고?

답변

2

사용이 struct module 정수의 튜플에이 값을 압축 해제하려면 다음 >HBB 형식 지정은 리틀 엔디안 형식으로 3 개 값을 기대하는 struct을 알려줍니다

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

, 하나의 부호없는 짧은 (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' 

을 해당 날짜를 나타내는 문자열을 만듭니다.