2010-07-18 22 views
5

struct मॉड्यूल उपयोगी है जब आप डेटा को बाइनरी प्रारूपों में कनवर्ट करने का प्रयास कर रहे हैं। हालांकि, हाल ही में मैं एक फ़ाइल स्वरूप विनिर्देश में आया जो the binary16 floating point format का उपयोग करता है। मैंने पाइथन दस्तावेज के माध्यम से देखा, लेकिन कुछ भी नहीं मिला जो इसे और उससे परिवर्तित कर सकता है। पाइथन फ्लोट से/इस डेटा को कनवर्ट करने का सबसे अच्छा तरीका क्या होगा?पाइथन

उत्तर

4

आप इसे मोटे तौर पर कर सकते हैं जैसे आप सी में यह करना चाहते हैं - जैसे कि, मुझे लगता है, मोटे तौर पर इस तरह ...:

def tofloat(b16): 
    sign = -1 if b16 & 0x8000 else +1 
    expo = (b16 & 0x7C00) >> 10 
    prec = b16 & 0x03FF 
    if expo == 0: 
    return sign * (2.0 ** -24) * prec 
    elif expo == 0x1F: 
    return sign * float('inf') 
    prec |= 0x0400 
    return sign * (2.0 ** (expo - 25)) * prec 
1

एक त्वरित Google खोज http://packages.python.org/bigfloat/ चालू हुई जो कहती है कि इसका binary16 फ़्लोटिंग-पॉइंट नंबरों में हेरफेर करने का संदर्भ है। मैं खुद पैकेज से परिचित नहीं हूं, हालांकि, मैं आपको इसका उपयोग करने के तरीके के बारे में कुछ भी नहीं बता सका (कम से कम, दस्तावेज में खुद को पढ़ सकते हैं उससे भी ज्यादा कुछ नहीं)।

2

This guy's blog post दोनों और पायथन में एक कार्यान्वयन देता है। वह struct मॉड्यूल का उपयोग करता है, फिर इसे मैन्युअल रूप से डीकोड करता है। यह सब कुछ जटिल नहीं है।