Hexcode als Binarydatei speichern

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

  • Hexcode als Binarydatei speichern

    Hallo,

    ich kann mit diesem Code ein Binary lesen und die Hexwerte in ein Array schreiben:

    PHP-Code:

    $fp
    =fopen("test.lnk","r");
    $i=0;while(!feof($fp))
        {
        
    $ahex[$i]=bin2hex(fread($fp,1));
        
    $i++;}
    fclose($fp);
    print_r($ahex); 
    Nun habe ich es jedoch nicht geschafft, diese Hexwerte wieder als Binary zu speichern. Es wird immer als String gespeichert wenn ich dies versuche. Eine Idee wie das gehen könnte?

    Zum Hintergrund: Ich möchte eine Windows Datei Verknüpfung dynamisch bearbeiten und dann zum Download bereit stellen. Falls jemand eine Bibliothek oder eine Idee hat, wie man diese sonst noch erstellen kann, dann bitte auch posten. Die Shell Lösung kommt nicht in frage da es sich um einen Linuxserver handelt.

    Schom mal vielen Dank im Vorraus,

    mit freundlichen Grüßen,

    Sky

  • #2
    Habe dazu das hier im Manual gefunden:

    PHP-Code:
    <?
    function hexbin($hex){
       $bin='';
       for($i=0;$i<strlen($hex);$i++)
           $bin.=str_pad(decbin(hexdec($hex{$i})),4,'0',STR_PAD_LEFT);
           return $bin;


    function binhex($bin){
       $hex='';
       for($i=strlen($bin)-4;$i>=0;$i-=4)
           $hex.=dechex(bindec(substr($bin,$i,4)));
       return strrev($hex);
    }
    ?>
    Suchst du sowas?

    Gruß,
    Flo.

    Kommentar


    • #3
      Hallo,

      ich glaube das hilft mir nicht weiter, die Funktionen sind wohl nur zum Umwandeln von Hex in Bin und umgedreht. Ich hatte das mit dem Schreiben so versucht:

      PHP-Code:
      $fp=fopen("blub.lnk","w");
          foreach(
      $ahex as $fn)
              {
              
      fwrite($fpdecbin(hexdec($fn)));
              }

      fclose($fp); 
      Dabei schreibt er aber einfach die Binärcodes als String in ne Datei, als Text sozusagen.

      Kommentar


      • #4
        Re: Hexcode als Binarydatei speichern

        Original geschrieben von skywalkerems84
        Nun habe ich es jedoch nicht geschafft, diese Hexwerte wieder als Binary zu speichern. Es wird immer als String gespeichert wenn ich dies versuche.
        Natürlich - weil dir bin2hex ja schließlich die Hexadezimaldarstellung als String zurückliefert!
        Eine Idee wie das gehen könnte?
        chr()
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Ich versuche doch hiermit:

          PHP-Code:

          fwrite
          ($fpdecbin(hexdec($fn)) 
          den Hexwert $fn in einen Dezimalwert und diesen dann in einen Binärwert zu verwandeln. Aber dieser Binärwert wird dann als String gespeichert. Wenn ich die Datei blub.lnk im Editor öffne, ist das ne normale Textdatei.

          Da hilft mir leider chr() auch nicht weiter.

          Kommentar


          • #6
            Original geschrieben von skywalkerems84
            Ich versuche doch hiermit: [...] den Hexwert $fn in einen Dezimalwert und diesen dann in einen Binärwert zu verwandeln. Aber dieser Binärwert wird dann als String gespeichert.
            Ja, eben - auch decbin liefert dir immer noch einen Zahlwert als String zurück.
            Da hilft mir leider chr() auch nicht weiter.
            Doch - du musst es nur noch kurz kapieren ...
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Oh man, nun fällt es mir auch auf! Hier nochma die Lösung des Problems:

              PHP-Code:

              $fp
              =fopen("test.lnk","r");
              $i=0;while(!feof($fp))
                  {
                  
              $ahex[$i]=bin2hex(fread($fp,1));
                  
              $i++;}
              fclose($fp);
              print_r($ahex);

              $fp=fopen("blub.lnk","w");
                  foreach(
              $ahex as $fn)
                      {
                      
              fwrite($fpchr(hexdec($fn)));
                      }

              fclose($fp); 
              Vielen vielen Dank dafür und sorry das ich es nicht gleich gerafft hab!

              Kommentar

              Lädt...
              X