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

Delphi Discussion :

[Conversion] Hexa to Real


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 16
    Par défaut [Conversion] Hexa to Real
    bonjour

    Comment convertir une valeur hexa en réel.

    exemple : 3CAD1D93 correspont au réel 0.021.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 964
    Par défaut
    Citation Envoyé par camis1
    bonjour

    Comment convertir une valeur hexa en réel.

    exemple : 3CAD1D93 correspont au réel 0.021.
    avant de commencer vous devez connaître le format de la représentation binaire du flottant représenté en hexa :

    par exemple

    S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF
    0 1 8 9 31

    1 bit de signe, 8 bits d'exposants, 23 bits de partie fractionnaire

    et savoir si cette représentation correspond à celle de votre OS…

  3. #3
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Si ton format est un Single

    Ceci devrait t'aider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var
       SHexa : string;
       IHexa : LongWord;
       PReel : ^Single;
    begin
         SHexa := '3CAD1D93'; // 0.021
         IHexa := StrToInt( '$'+SHexa );
         PReel := @IHexa;
         ShowMessage( SHexa + ' = ' + FloatToStr( PReel^ ) ); 
    end;
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  4. #4
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    J'ai déjà vu cette question dans le forum Pascal :
    http://developpez.net/forums/showthread.php?t=6422

  5. #5
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 16
    Par défaut
    merci TicTacToe, ca l'ère de marché.

    par contre j'ai un problème avec les datetime

    comme par exemple la conversion de cette valeur hexa en datetime :
    001B000C00100003071700010005003C ---> 01-03-2007 16:12:49

  6. #6
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Citation Envoyé par camis1
    merci TicTacToe, ca l'ère de marché.

    par contre j'ai un problème avec les datetime

    comme par exemple la conversion de cette valeur hexa en datetime :
    001B000C00100003071700010005003C ---> 01-03-2007 16:12:49
    Avec les TDateTime c'est totalement normal.
    Les SIngle sont codés sur 4 octets - la chaine hexa que tu fournis, c'est pour ca que j'ai supposé que c'était single.
    Par contre un TDateTime, est en réalité un double, donc codé sur 8 octets.
    Ca n'a donc plus rien à voir !

    [Edit]
    Tu peux tenter avec Int64 et Double (ou TDatime avec les casts nécéssaire) pour décoder ton datetime.
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

Discussions similaires

  1. Fonctions de conversions (hexa->int & hexa->uint)
    Par MonsieurAk dans le forum C
    Réponses: 2
    Dernier message: 18/05/2006, 09h36
  2. Fonctions de conversions (hexa->int & hexa->uint)
    Par MonsieurAk dans le forum Windows
    Réponses: 0
    Dernier message: 17/05/2006, 14h05
  3. CString : conversion Hexa -> caractere
    Par auriga dans le forum MFC
    Réponses: 7
    Dernier message: 11/05/2006, 19h53
  4. Conversion Hexa --> Decimal
    Par lory_van_eyck dans le forum Général Python
    Réponses: 2
    Dernier message: 28/09/2005, 08h29
  5. conversion hexa-binaire
    Par jack69 dans le forum C
    Réponses: 8
    Dernier message: 04/04/2005, 17h33

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