note 101318 added to language.types.float
| From: | JulianL at osu1 dot php dot net | Date: | Thu, 09 Dec 2010 15:51:00 +0000 |
| Subject: | note 101318 added to language.types.float | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-174752@lists.php.net to get a copy of this message | ||
Convert a hex string into a 32-bit IEEE 754 float number. This function is 2 times faster then the
below hex to 32bit function. This function only changes datatypes (string to int) once. Also, this
function is a port from the hex to 64bit function from below.
<?php
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);
}
?>
<?php
//example
echo hexTo32Float("C4028000"); // outputs: -522
echo hexTo32Float("457F9000"); // outputs: 4089
echo hexTo32Float("2D7F5"); // outputs: 6.00804264307E-39
echo hexTo32Float("0002D7F5"); // outputs: 6.00804264307E-39
echo hexTo32Float("47D9F95E"); // outputs: 111602.734375
?>
----
Server IP: 64.71.164.2
Probable Submitter: 70.161.146.214
----
Manual Page -- http://www.php.net/manual/en/language.types.float.php
Edit -- https://master.php.net/note/edit/101318
Del: integrated -- https://master.php.net/note/delete/101318/integrated
Del: useless -- https://master.php.net/note/delete/101318/useless
Del: bad code -- https://master.php.net/note/delete/101318/bad+code
Del: spam -- https://master.php.net/note/delete/101318/spam
Del: non-english -- https://master.php.net/note/delete/101318/non-english
Del: in docs -- https://master.php.net/note/delete/101318/in+docs
Del: other reasons-- https://master.php.net/note/delete/101318
Reject -- https://master.php.net/note/reject/101318
Search -- https://master.php.net/manage/user-notes.php