Tom: Ingeter/float aus Byte Array

Beitrag lesen

Hello,

Ich verstehe nicht ganz, woher Du die Daten bekommst und warum Du sie dann erst in einem Array parken musst. PHP speichert die numerischen Werte, so wie Du sie ins Array speicherst, als Integer mit üblicherweise 4 Byte.

Die Daten lese ich über socket_read() von einem Gerät ein. Gut, da bekomme ich einen String zurück den ich zuerst in ein Array konvertiere und zurückgebe.
Ich dachte mir, Binärdaten gehören in ein Array und nicht in einen String.

PHP kennt aber gar keine Arrays, außer den Strings :-))
Die Dinger, die in PHP Array heißen, kann man sich besser als (kreuz-)verkettete Listen vorstellen, also als Baumstrukturen von Elementen, die aus Schlüsseln und beliebigen Nutzdatentypen bestehen.
Der Index ist ein Name und keine Position, lässt also keinen Direktzugriff auf den Speicher per Berechnung der Speicherposition aus Index und Datentyp zu.

Das möchte PHP selber erledigen.

Für Deine Zwecke müsste es dann ja am Besten sogar noch ein Ringspeicher sein. Aber auch den müsstest Du Dir besser aus "Strings" basteln.

Die PHP-Arrays haben ein mächtigen Overhead von bis zu 20 Bytes pro Element.
Darauf hat Sven Dich ja schon hingewiesen.

Nach der Behandlung mit unpack() erhältst Du dann allerdings ein PHP-Array von Werten.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de