IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Lire un flottant long double


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 1
    Par défaut Lire un flottant long double
    Bonjour,
    j'essaie de lire un fichier binaire qui contient des nombres à virgule flottante encodés sur 80 bits. (Il contient également des entiers sur 16 bits que j'arrive à récupérer avec struct.unpack())
    Comment récupérer la valeur de ces nombres, sachant que je n'ai pas besoin d'une grande précision ?
    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    J'ai essayé de bricoler un truc avec ctypes, mais je n'ai pas de float 80 sous la main pour tester et ça n'est sûrement pas bon.

    Si quelqu'un si connait plus, j'étais parti là-dessus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from ctypes import *
     
    class Float80(Structure):
        _pack_ = 1
        _fields_ = [('mantisse', c_uint64),
                    ('exposant', c_uint16, 15),
                    ('signe', c_uint16, 1)]
     
        def as_float(self):
            return (1,-1)[self.signe] * 2**(self.exposant-16383) * (1+(self.mantisse / float(1<<64)))
     
    #utilisation:
    Float80.from_buffer_copy(string_de_10_octets).as_float()
    A moins que quelqu'un corrige mon code, ton meilleur espoir est peut-être de faire un pré-traitement en C (en supposant que le compilo supporte les long double de 80 bits) pour les convertir en double standard (64 bits).

Discussions similaires

  1. Long double : 1e+006 ...
    Par Invité dans le forum C++
    Réponses: 8
    Dernier message: 14/02/2006, 13h07
  2. Affichage long double
    Par slate dans le forum C++
    Réponses: 5
    Dernier message: 07/02/2006, 18h04
  3. Réponses: 4
    Dernier message: 12/09/2003, 11h38
  4. abs pour un long double
    Par barthelv dans le forum C
    Réponses: 2
    Dernier message: 23/07/2003, 16h16
  5. String -> long double (_strlold ?)
    Par haypo dans le forum C
    Réponses: 7
    Dernier message: 25/07/2002, 20h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo