# Comment on Tutorial - Convert a hex string into a 32-bit IEEE 754 float number in PHP By Julian L

Comment Added at : 2015-02-02 14:42:56

Comment on Tutorial : Convert a hex string into a 32-bit IEEE 754 float number in PHP By Julian L
My code:

\$hex=array('C4028000','457F9000','2D7F5','0002D7F5','47D9F95E','000040E4');

foreach(\$hex as \$h){
echo \$h.'='.hexTo32Float(\$h).'<br>';
}

function hexTo32Float(\$strHex) {
\$v = hexdec(\$strHex);
\$x = (\$v & ((1 << 23) - 1)) + (1 << 23) * (\$v >> 31 | 1);
\$exp = (\$v >> 23 & 0xFF) - 127;
return \$x * pow(2, \$exp - 23);
}

This outputs:

C4028000=522
457F9000=4089
2D7F5=6.0080426430695E-39
0002D7F5=6.0080426430695E-39
47D9F95E=111602.734375
000040E4=5.8891109391561E-39

The first output differs from yours as it is positive. The other values match yours. However, the last one (000040E4=5.8891109391561E-39) doesn't agree with http://babbage.cs.qc.cuny.edu/IEEE-754/index.xhtml, which tells me the decimal value of 000040E4 is 2.3278370089363861182184995837612086772827711378452680000428418331977209465577516311896033585071563720703125E-41

And http://babbage.cs.qc.cuny.edu/IEEE-754.old/32bit.html tells me it should be: 2.327837008936386e-41

Is this an error in the function or an error on the other site?

Cheers,
Mark.

View Tutorial