Ankündigung

Einklappen
Keine Ankündigung bisher.

Verständnisfrage zu pack() und unpack()

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • HStev
    hat ein Thema erstellt Verständnisfrage zu pack() und unpack().

    Verständnisfrage zu pack() und unpack()

    Hallo,

    ich experimentiere gerade ein wenig mit Pack und Unpack herum und versuche einen Binären String zu zerlegen den ich mir zu vorver erstellt habe.

    Ich versuche eigentlich nix weiter als ein Word (unsigned short) gefolgt von einer Zeichenkette binär zu verpacken und wieder zu entpacken.
    PHP-Code:
    <?php
    $binarydata 
    pack ("SC"0x004b"Hallo Welt");

    echo 
    $binarydata ;

    $string unpack"SC"$binarydata);

    echo 
    "<pre>";
    print_r($string);
    echo 
    "</pre>";
    ?>
    aber als Ausgabe gibts nur:

    Array
    (
    [C] => 75
    )
    Ich hab irgendwo einen Denkfehler drinn nur wo?

  • HStev
    antwortet
    Grad mit Hilfe von Google die Lösung gefunden ... ist zwar umständlich aber so gehts

    PHP-Code:
    <pre>
    <?php
    $string 
    "Hello World";

    $hex_string bin2hex($string);
    echo 
    "HEX: ".$hex_string"
    "
    ;

    echo 
    "NORMAL: ".pack('H*'$hex_string)."
    "
    ;

    $bin pack('S'0x004b);

    for (
    $ndx 0$ndx strlen($hex_string); $ndx += 2) {
        
        
    $hex_chunk $hex_string[$ndx].$hex_string[$ndx+1];
        
        
    $bin .= pack('H2'$hex_chunk);
    }

    $unpacket unpack('Sa1/H*a2'$bin);

    print_r($unpacket);

    echo 
    "ERGEBNIS: ".pack('H*'$unpacket[a2])."
    "
    ;

    ?>
    </pre>

    Einen Kommentar schreiben:


  • HStev
    antwortet
    jap habs grad hinzu editiert ... hatte ich vorher auch schon probiert...

    ich befürchte fast das ich Strings als Hex Zeichenfolge an den Binärstring hängen muss

    Einen Kommentar schreiben:


  • Buhmann
    antwortet
    na immerhin geht das erste.
    haste Waq's tipp befolgt?

    Einen Kommentar schreiben:


  • HStev
    antwortet
    nein auch nicht

    a=75
    b=0

    Zitat von Waq
    das C in SC ist ein einzelner Character, also ein Zeichen
    SC* könnte helfen
    hab ich auch schon probiert ... leider ohne erfolg zumal das Wiederholungs-Argument optional ist

    Einen Kommentar schreiben:


  • Buhmann
    antwortet
    versuch mal
    PHP-Code:
    <?php
    $string 
    unpack"Sa/Cb"$binarydata); 
    ?>
    unpack() funktioniert etwas anders als man es von Perl her kennt, da sich die zurück gegebenen Daten in einem assoziativen Array befinden. Dies erreichen sie nur, wenn sie die verschiedenen Format-Codes benennen und sie mit einem "/" voneinander trennen.

    Einen Kommentar schreiben:


  • Waq
    antwortet
    das C in SC ist ein einzelner Character, also ein Zeichen
    SC* könnte helfen

    Einen Kommentar schreiben:

Lädt...
X