Conversion d'un nombre hexa en float

Conversion d'un nombre hexa en float - PHP - Programmation

Marsh Posté le 10-08-2009 à 14:19:55    

Bonjour,
 
Savez vous comment faire pour convertir un nombre hexadécimal en float :
 
Exemple :
403F5C29 devrait donner 2.99
 
Pour ma part je sèche totalement.
 
Merci

Reply

Marsh Posté le 10-08-2009 à 14:19:55   

Reply

Marsh Posté le 10-08-2009 à 14:31:55    

Si tu comprends comment fonctionne la représentation IEEE 754 tu devrais pouvoir faire l'algo facilement : http://fr.wikipedia.org/wiki/IEEE_754
 
A mon avis il faut déjà convertir l'héxa en binaire à moins qu'il n'y ait une méthode plus simple que j'ai oublié.

Reply

Marsh Posté le 10-08-2009 à 16:33:43    

J'ai trouvé une fonction qui me permet de passer du binaire en float :
 

Code :
  1. function bin2float ($bin) {
  2.     if((ord($bin[0])>>7)==0) $sign=1;
  3.     else $sign=-1;
  4.     if((ord($bin[0])>>6)%2==1) $exponent=1;
  5.     else $exponent=-127;
  6.     $exponent+=(ord($bin[0])%64)*2;
  7.     $exponent+=ord($bin[1])>>7;
  8.  
  9.     $base=1.0;
  10.     for($k=1;$k<8;$k++) {
  11.      $base+=((ord($bin[1])>>(7-$k))%2)*pow(0.5,$k);
  12.     }
  13.     for($k=0;$k<8;$k++) {
  14.      $base+=((ord($bin[2])>>(7-$k))%2)*pow(0.5,$k+8);
  15.     }
  16.     for($k=0;$k<8;$k++) {
  17.      $base+=((ord($bin[3])>>(7-$k))%2)*pow(0.5,$k+16);
  18.     }
  19.  
  20.     $float=(float)$sign*pow(2,$exponent)*$base;
  21.     return $float;
  22. }

Reply

Marsh Posté le 10-08-2009 à 16:50:58    

Alors le problème est résolu car hexa->binaire c'est comme décimal->binaire c'est très simple. :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed