डेटाबेस निर्यात फ़ाइल में मेरे पास एक कॉलम है जो बाइनरी प्रारूप में संग्रहीत है। मैं फ़ाइल में तिथियों को अनपैक करने की कोशिश कर रहा हूं ताकि "x07xdbx0cx01" फिर से "01-12-2011" बन जाए।
मुझे पता है कि कैसे हेक्साडेसिमल मान उनके दशमलव समकक्ष को corresspond,
0x07DB = 2011
0x0C = 12
0x01 = 01
लेकिन इन स्वरूपित तिथियों को सही तरीके से अनपैक कैसे करें?
उत्तर:
जवाब के लिए 2 № 1उपयोग struct
मॉड्यूल इन मानों को पूर्णांक के टुपल में अनपैक करने के लिए:
import struct
year, month, day = struct.unpack(">HBB", "x07xdbx0cx01")
The >HBB
प्रारूप विनिर्देशक बताता है struct
थोड़ा एंडिशियन प्रारूप में 3 मूल्यों की उम्मीद करने के लिए, एक अहस्ताक्षरित लघु (एक 2 बाइट मूल्य, एक पूर्णांक के रूप में पढ़ने के लिए) और अहस्ताक्षरित चारे (1 बाइट मूल्यों, पूर्णांक के रूप में पढ़ने के लिए)।
तुम तो इन करने के लिए पारित कर सकता है datetime.date()
यदि आप चाहते हैं तो एक तिथि वस्तु बनाने के लिए:
from datetime import date
import struct
somedate = date(*struct.unpack(">HBB", "x07xdbx0cx01"))
डेमो:
>>> import struct
>>> from datetime import date
>>> date(*struct.unpack(">HBB", "x07xdbx0cx01"))
datetime.date(2011, 12, 1)
या आप स्ट्रिंग फॉर्मेटिंग का उपयोग कर सकते हैं:
>>> "{2:02d}-{1:02d}-{0}".format(*struct.unpack(">HBB", "x07xdbx0cx01"))
"01-12-2011"
उस तारीख का प्रतिनिधित्व करने वाली एक स्ट्रिंग बनाना।