Thomas123: Ingeter/float aus Byte Array

Beitrag lesen

zeig doch bitte Deinen ganzen bisherigen Code, bitte mit guten Kommentaren dazu, was Du Dir dabei gedacht hast und was dabei wirklich herausgekommen ist.

Wenn Du es nicht nachher tatsächlich ber Bitoperatoren erledigen willst, dann ist die Unpack()-Funktion aber schon der richtige Weg dafür.

Dazu müssen die Byte-Werte in einem String angeordnet werden. Dieser kann dann mittels unpack() behandelt werden.

Hallo Tom,
so viel kompletten Code habe ich noch nicht.
Aber ich bin deinem Tip mit unpack() nochmal gefolgt, und für einen signed int funktionert es jetzt zumindest

  
/* Rohdaten */  
$data = Array(0xff, 0xff, 0x30, 0x39);  
  
/* Im Array $data ab Position 0 */  
$x = toSint16($data, 0);  
echo "x= ". $x . "\n";  
  
/* Im Array $data ab Position 2 */  
$x = toSint16($data, 2);  
echo "x= ". $x . "\n";  
  
function toSint16($arr, $pos)  
{  
	$val = unpack("s", chr($arr[$pos + 1]) . chr($arr[$pos]));  
	return $val[1];	  
}  

Muss mal sehen ob ich meine anderen Datentypen mit diesem Prinzip auch erschlagen bekomme, und ob das ganze maschinenunabhänging ist.

Am liebsten hätte ich natürlich auch nur ein Funktionsparameter wie toSint16($data[2]).

Gruß
Thomas