2015-12-03 1 views
2

J'essaye de convertir un nombre hexadécimal de 64 bits à un flotteur dans PHP.Convertir 64 bits hexadécimal pour flotter dans PHP

40F82C719999999A 

Si je cours que dans la page de conversion de virgule flottante IEEE-754 à http://babbage.cs.qc.cuny.edu/IEEE-754.old/64bit.html il convertit:

99015.100000000000 

Quel est le numéro que je suis à la recherche. Mais je ne peux pas arriver à ce numéro en PHP. J'ai essayé d'utiliser diverses combinaisons de pack() et unpack() mais je ne suis pas proche. :(

+0

Êtes-vous essayer d'obtenir un '' float' ou représentation double'? En d'autres termes, utilisez-vous un 32 ot version 64 bits de PHP? – Flosculus

+1

Pouvez-vous le code que vous utilisez? – James

+0

@flosculus Si PHP_INT_SIZE est digne de confiance pour de telles choses, j'utilise un PHP 64 bits – SyntaxError

Répondre

3
function hex2float($strHex) { 
    $hex = sscanf($strHex, "%02x%02x%02x%02x%02x%02x%02x%02x"); 
    $hex = array_reverse($hex); 
    $bin = implode('', array_map('chr', $hex)); 
    $array = unpack("dnum", $bin); 
    return $array['num']; 
} 

$float = hex2float('40F82C719999999A'); 
echo $float; 

retournera 99015,1