Moin!
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.
Du machst aus dem String ein Array mit Byte-Integerwerten.
Und dann machst du in deiner Funktion toSint() aus dem Arraywert wieder einen String, auf den du dann unpack() anwendest. Klingt irgendwie nach einem Irrweg, oder? Zumal ein Array von Integerwerten deutlich mehr Speicher verbraucht, als ein String. Wenn die gelesene Datenmenge also hinreichend groß ist, kriegst du damit noch ganz andere Probleme.
Andererseits: unpack zerlegt dir auf Wunsch auch mehr als ein Byte eines Strings in Integerwerte. Effektiv könntest du, sofern sich die eingelesenen Daten dazu eignen, alle Bytes direkt in Integer wandeln.
- Sven Rautenberg