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

C++ Discussion :

Probleme conversion string to 64 bit floating IEEE format


Sujet :

C++

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [NON SUIVI]Probleme conversion string to 64 bit floating IEEE format
    Bonjour a tous,

    Je suis en train de faire une petite application pour piloter un instrument de mesure (via GPIB/VISA) et mon application arrive bien a recuperer mon buffer de data (N octet). Je bloque par contre sur le reformata de ces datas.

    Si je demance 10 valeurs, je recupere un buffer de 10*8 octets. Chaque valeur etant codee au format "IEEE 64 bit floating point number" :

    Sign : 1 bit
    Exponent part : 11 Bit
    fraction part : 52 Bit

    Je voudrais stocker chaque valeur au format "double" (ex : double result[10]

    est ce quelqu un a une idee?

    Merci Beaucoup

    PS: je bosse sous c++ builder, donc si votre solution utilise des fonction de builder ca me va aussi .
    Force et Honneur

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    double readIEEE64(unsigned char data[8])
    {
      unsigned long long tmp = static_cast<unsigned long long>(data[0]) << 56;
      tmp |= static_cast<unsigned long long>(data[1]) << 48;
      tmp |= static_cast<unsigned long long>(data[2]) << 40;
      tmp |= static_cast<unsigned long long>(data[3]) << 32;
      tmp |= static_cast<unsigned long long>(data[4]) << 24;
      tmp |= static_cast<unsigned long long>(data[5]) << 16;
      tmp |= static_cast<unsigned long long>(data[6]) << 8;
      tmp |= static_cast<unsigned long long>(data[7]);
      double result = 0.0;
      if ((tmp & 0x7FFFFFFFFFFFFFFF) != 0)
      {
        result = ldexp(static_cast<double>((tmp & 0x000FFFFFFFFFFFFF) | 0x0010000000000000),
                       static_cast<int>((tmp & 0x7FF0000000000000) >> 52) - 1022 - 53);
      }
      if ((tmp & 0x8000000000000000) != 0)
      {
        result = -result;
      }
      return result;
    }

Discussions similaires

  1. Probleme de conversion string to float
    Par cagli dans le forum Objective-C
    Réponses: 4
    Dernier message: 15/05/2013, 15h38
  2. [NumberFormat] Conversion String en double ou float
    Par Lolitaaa dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 08/11/2010, 11h24
  3. conversion string hexa en float
    Par cimson dans le forum Langage
    Réponses: 6
    Dernier message: 26/04/2007, 00h57
  4. Problème de conversion String en Float avec JTable
    Par dumasan dans le forum Composants
    Réponses: 4
    Dernier message: 23/04/2007, 12h56
  5. float conversion String
    Par aliomrani1 dans le forum Langage
    Réponses: 6
    Dernier message: 20/02/2007, 13h06

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