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

  • 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?
    Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

  • #2
    das C in SC ist ein einzelner Character, also ein Zeichen
    SC* könnte helfen
    mod = master of disaster

    Kommentar


    • #3
      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.

      Kommentar


      • #4
        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
        Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

        Kommentar


        • #5
          na immerhin geht das erste.
          haste Waq's tipp befolgt?

          Kommentar


          • #6
            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
            Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

            Kommentar


            • #7
              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>
              Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

              Kommentar

              Lädt...
              X