4 Byte eine 32bit Gleitkommazahl nach IEEE-Standard

Hey,

ich versuche schon seit Stunden diese Funktion umzudrehen
also ein Float-Variable in ihre 4Bytes zu zerlegen.

// Float-Berechnung nach IEEE (siehe: http://de.wikipedia.org/wiki/Gleitkommazahl)
$inbuf = array(65, 159, 173, 212);

$s = ($inbuf[0] & 0x80) >> 7;                                   // Vorzeichen ermitteln
$c = ((($inbuf[0] & 0x7f) <<  8) | ($inbuf[1] & 0x80)) >> 7;    // Charakteristik ermitteln
$e = $c - 127;                                                  // aus der Charakteristik den Exponenten ermitteln
$m = (($inbuf[1] & 0x7f) << 16) | ($inbuf[2] << 8) | $inbuf[3]; // Mantisse ermitteln
$m = 1 + $m/8388608;                                            // Mantisse korrigieren

$temperatur = pow(-1, $s) * $m * pow(2, $e);                    // Float-Wert berechnen  

habs schon versucht mit unpack/pack aber nicht hingeriegt.
Wie kann ich dies Lösen ?

Gruß Michael

in c geht das so:

union 
{
 unsigned x;
 float myf;
} ieeSingle;  //2 Variablen unterschieblichen Typs auf den selben 4 Byte Speicher

 ieeSingle.x=(int)((int)linbuf[0]*256*256*256+(int)inbuf[1]*256*256+(int)inbuf[+2]*256+inbuf[3]);

Wert danach in ieeSingle.myf;

Danke,
das problem wurde anderes gelöst, geht nun per string direkt in die Steuerung.

Gruß Michael