hawkmaster: Hex Daten umwandeln

Hallo zusammen,

mit einer SNMP Abfrage von einem Gerät bekomme ich einen Hex Wert wie folgt zurück:

41 62 64 65 63 6B 75 6E 67

Ich würde dies nun gerne in Ascii bzw. ein lesbares Format umwandeln

1. Versuch:
echo hex2bin("41 62 64 65 63 6B 75 6E 67");

zeigt genau die Zahlen gleich an.

2. Versuch:
echo hex2bin("41626465636B756E67");

So funktioniert es: Ausgabe = "Abdeckung"

3. Versuch die Leerzeichen mit trim() zu entfernen greift nicht.

4. Versuch mit preg_replace

$oldstring = "41 62 64 65 63 6B 75 6E 67";
$replace = "";
$newstring = preg_replace("#\s$#",$replace,$oldstring);

echo hex2bin($newstring);

bringt die Meldung:

Warning: hex2bin(): Hexadecimal input string must have an even length in

Jetzt bin ich etwas ratlos :-)

vielen Dank und viele Grüße
hawk

  1. Tach!

    1. Versuch die Leerzeichen mit trim() zu entfernen greift nicht.

    trim() wirkt nur auf den Anfang und das Ende von Strings, nicht auf die Innereien.

    1. Versuch mit preg_replace

    str_replace() gibt es auch noch.

    $replace = "";

    Den Leerstring mit einmaliger Verwendung würde ich ja nun nicht noch extra in eine Variable stecken.

    $newstring = preg_replace("#\s$#",$replace,$oldstring);

    \s$ heißt ein Whitespace und dann ein Stringende. Das ist sicher nicht das was du willst.

    dedlfix.

  2. @@hawkmaster:

    nuqneH

    1. Versuch die Leerzeichen mit trim() zu entfernen greift nicht.

    Natürlich nicht. „trim — Entfernt Whitespaces (oder andere Zeichen) am Anfang und Ende eines Strings“

    Du weißt, was „Anfang“ und „Ende“ bedeuten? ;-)

    1. Versuch mit preg_replace

    $oldstring = "41 62 64 65 63 6B 75 6E 67";
    $replace = "";
    $newstring = preg_replace("#\s$#",$replace,$oldstring);

    echo hex2bin($newstring);

    bringt die Meldung:

    Warning: hex2bin(): Hexadecimal input string must have an even length in

    Jetzt bin ich etwas ratlos :-)

    Vielleicht solltest du dir mal den Wert von $newstring ansehen, bevor du den an hex2bin() verfütterst.

    Und um gleich deine nächste Frage zu beantworten: Vielleicht solltest du dir deinen regulären Ausdruck nochmal ansehen.

    Hierbei die diesmal wirklich erst gemeinte Frage: Du weißt, was „Anfang“ und „Ende“ bedeuten?

    Qapla'

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
  3. trim ist nur für Anfang und Ende gedacht.
    Wie wärs einfach mit str_replace? regex ist dafür doch viel zu komplex.

    Warning: hex2bin(): Hexadecimal input string must have an even length in

    Dann hast du noch was anderes mit entfernt oder hinzugefügt. Sieh dir die Daten vorher und nacher an und vergleiche was du hast und was du haben wolltest.