पाइथन में बाइट्स को फ़्लोटिंग पॉइंट नंबरों में कनवर्ट करें

मेरे पास एक बाइनरी फ़ाइल है जिसे मुझे पार्स करना है और मैं पायथन का उपयोग कर रहा हूं। क्या 4 बाइट्स लेने और इसे एक सटीक फ्लोटिंग पॉइंट नंबर में बदलने का कोई तरीका है?

0
ro fr bn

2 उत्तर

आप struct पैकेज चाहते हैं।

0
जोड़ा
आप जीतने का वोट प्राप्त कर सकते थे, लेकिन उदाहरण कोड नहीं जोड़ा ...
जोड़ा लेखक Mayhem, स्रोत
थोड़ा सा प्रदर्शन कोड जोड़ें और मैं ऊपर उठाऊंगा।
जोड़ा लेखक John Mulder, स्रोत
>>> import struct
>>> struct.pack('f', 3.141592654)
b'\xdb\[email protected]'
>>> struct.unpack('f', b'\xdb\[email protected]')
(3.1415927410125732,)
>>> struct.pack('4f', 1.0, 2.0, 3.0, 4.0)
'\x00\x00\x80?\x00\x00\[email protected]\x00\[email protected]@\x00\x00\[email protected]'
0
जोड़ा
मैं @dplass से सहमत हूं, अन्य फ्लोट्स के बारे में क्या। और, इस स्ट्रिंग के अंत में एक अल्पविराम क्यों है?
जोड़ा लेखक Startec, स्रोत
@startec सवाल 4-बाइट फ्लोट्स था। कौन सी स्ट्रिंग एक अल्पविराम के साथ समाप्त होती है? struct.unpack से केवल tuple को अल्पविराम है।
जोड़ा लेखक tzot, स्रोत
सी <�कोड> फ्लोट (सिंगल, 4 बाइट्स) और सी <�कोड> डबल </कोड> (डबल, 8 बाइट्स) की @PetrKrampl सटीकता। पायथन <�कोड> फ्लोट वास्तव में सी <�कोड> डबल है। 3.141592654 को सी <�कोड> डबल के रूप में संग्रहीत करने की सटीकता जो कुछ भी हो, जब यह C float (struct.pack द्वारा) में परिवर्तित हो जाती है और फिर वापस सी <�कोड> डबल (पायथन 4-बाइट्स को सी <�कोड> फ्लोट के रूप में निकालता है और फिर परिणाम को वापस code> डबल / पायथन <�कोड> में परिवर्तित करता है। नाव)। यह पायथन के सभी कार्यान्वयन पर लागू होता है जो आईईईई 754 फ्लोटिंग पॉ
जोड़ा लेखक tzot, स्रोत
नोट: बाइटियर के व्यक्तिगत बाइट्स को देखने के लिए (बी 'द्वारा इंगित), list() का उपयोग करें। पूर्व: सूची (struct.pack ('f', 3.141592654)) व्यक्तिगत बाइट्स की एक सूची [21 9, 15, 73, 64] के रूप में देता है। यह बहुत आसान है।
जोड़ा लेखक Gabriel Staples, स्रोत
यह केवल 4 या 8 बाइट फ्लोट के लिए काम करता है। 10-बाइट फ्लोट के बारे में क्या?
जोड़ा लेखक dplass, स्रोत
मुझे कहीं और संदर्भ मिला, धन्यवाद।
जोड़ा लेखक dplass, स्रोत
ठीक है, और दो संख्याओं की तुलना के बारे में क्या? <�कोड >>>> आयात संरचना >>> a = 3.141592654 >>> प्रिंट करें 3.141592654 >> > a_packed = struct.pack ('f', a) >>> b = struct.unpack ('f', a_packed) [0] >>> प्रिंट बी 3.14159274101 >>> एक == बी, "एक गैर बी" ट्रेसबैक (सबसे हालिया कॉल अंतिम): `फ़ाइल "", पंक्ति 1, <�मॉड्यूल> ` AssertionError: एक गैर बी में
जोड़ा लेखक Petr Krampl, स्रोत