bonjour
Comment convertir une valeur hexa en réel.
exemple : 3CAD1D93 correspont au réel 0.021.








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 :Envoyé par camis1
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…
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 ;-)
J'ai déjà vu cette question dans le forum Pascal :
http://developpez.net/forums/showthread.php?t=6422








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.Envoyé par camis1
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 ;-)
Partager