मेरे पास एक बाइनरी फ़ाइल है जिसे मैं पढ़ रहा हूं जहां कुछ 2 बाइट मान 'रिवर्स' बाइट ऑर्डर (थोड़ा एंडियन?) में संग्रहीत हैं, उदाहरण के लिए।बाइनरी डेटा के बाइट ऑर्डर को कैसे स्विच करें
1D 00 13 00 27 00 3B 00 45 00 31 00 4F
मूल मूल्य जो इन मानों को बनाता है उन्हें आंतरिक रूप से शॉर्ट्स के रूप में स्टोर करता है। उन मानों के अनुरूप होना चाहिए: 2 9, 1 9, 3 9, 5 9, 69, 4 9, 79. मैं पाइथन 2.6.5 का उपयोग करके इन मानों को पढ़ने की कोशिश कर रहा हूं (हालांकि यह शायद पुराने सिस्टम पर चलाया जाएगा, उदाहरण के लिए 2.3 और 2.4) ।
मैं
val1, val2, val3, val4, val5, val6, val7 = struct.unpack("1h 1h 1h 1h 1h 1h 1h", data)
का उपयोग कर की कोशिश की है और, ज़ाहिर है, मानों सब बाहर गलत आते हैं:
7427
4864
9984
15104
17664
12544
20224
struct के लिए दस्तावेज़ को देखने के बाद, मैंने सोचा कि मैं सक्षम होगा
val1, ... = struct.unpack("!h !h ...
लेकिन जैसे कुछ का उपयोग करने के लिए जब परीक्षण, मैं केवल
मिलाstruct.error: bad char in struct format
मैं इन मूल्यों को सही बाइट ऑर्डरिंग के साथ कैसे अनपैक कर सकता हूं? क्या मैं दो बाइटों में अलग-अलग पढ़ रहा हूं, फिर उन्हें अजगर कोड में फिर से इकट्ठा कर रहा हूं?
आह, वह था। मेरे पास प्रारूप स्ट्रिंग में कई प्रारूप विनिर्देशक हैं लेकिन पूरे स्ट्रिंग की शुरुआत के बजाय केवल 'h' विनिर्देशक के सामने बाइट ऑर्डर चार रखा गया है। धन्यवाद! – pfyon