Von INT zu HEX (kleines Problem...)

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

  • Von INT zu HEX (kleines Problem...)

    PHP-Code:
    <?php
      define
    ('BIT_BYTE'8); // bits per byte
      
    define('HEX_BYTE'BIT_BYTE/4); // hex digits in a byte

      
    define('BIT_INT',  32); // sizeof(int)
      
    define('HEX_INT',  BIT_INT / (BIT_BYTE/HEX_BYTE)); // hex digits in an int

      
    function i2h($int$group=HEX_BYTE$size=HEX_INT$sep=' ') {
       
    $ret '';
       while(
    $size--) {
         
    $n=($int>>($size*4)) & 0xf;
         
    $ret .= $n>9?chr(55 $n):$n;
         if(
    $size && $size%$group == 0$ret .= $sep;
       }
       return 
    $ret;
      }

      echo 
    i2h(3001);
    ?>
    Ergebnis: 00 00 0B B9
    Ich bräuchte aber: B9 0B 00 00
    (Also einfach die umgekehrte Reihenfolge)
    Weiß jemand wie ich die Reihenfolge der Gruppen umkehren kann?

    Wäre für jede richtungsweisende Antwort mehr als nur dankbar!!!

  • #2
    Weiß jemand wie ich die Reihenfolge der Gruppen umkehren kann?
    in array zerlegen und umgekehrt wieder zusammensetzen.

    Kommentar


    • #3
      Original geschrieben von TobiaZ
      in array zerlegen und umgekehrt wieder zusammensetzen.
      Danke vielmals für die wirklich mehr als nur schnelle Antwort, aber da ich noch recht neu bin (habe vor einer Woche mein erstes 'wirkliches' PHP Skriptchen geschrieben) kann ich deine Worte nicht die Tat umsetzen. Könntest du mir ein Beispiel geben, wie sowas funktioniert?
      (Sorry, ich weiß, bin der "d0ofe no0b")

      Kommentar


      • #4
        array zerlegen kannst du? explode()
        und dann nur noch die vier array teile in umgekehrter reihenfolge aneinander ketten (s. strings verketten)

        Kommentar


        • #5
          Mit deiner Hilfe bin ich doch weitergekommen, habe aber so das Gefühl, dass ich das nicht so gemacht habe wie du vorgeschlagen hast...
          PHP-Code:
          <?php
            define
          ('BIT_BYTE'8);
            
          define('HEX_BYTE'BIT_BYTE/4);

            
          define('BIT_INT',  32);
            
          define('HEX_INT',  BIT_INT / (BIT_BYTE/HEX_BYTE));

            function 
          i2h($int$group=HEX_BYTE$size=HEX_INT$sep=' - ') {
             
          $ret '';
             while(
          $size--) {
               
          $n=($int>>($size*4)) & 0xf;
               
          $ret .= $n>9?chr(55 $n):$n;
               if(
          $size && $size%$group == 0$ret .= $sep;
             }
             return 
          $ret;
            }

          $var=i2h(3001);

          $teil explode("-"$var);
          echo 
          $teil[3];
          echo 
          $teil[2];
          echo 
          $teil[1];
          echo 
          $teil[0];
          ?>

          Kommentar


          • #6
            PHP-Code:
            $teil explode("-"$var);
            echo 
            $teil[3];
            echo 
            $teil[2];
            echo 
            $teil[1];
            echo 
            $teil[0]; 
            im groben schon. aber warum benutzt du "-" statt " "?

            Kommentar


            • #7
              Umm ja... mag nun auch recht "newbish" klingen, aber... ich habe sonst keine Leerzeichen mehr zwischen den Teilen

              Kommentar


              • #8
                wenn du sagst es funktioniert, ist ja gut. wenn du einen string ala "00 00 00 00" hast, wüsste ich aber nicht, wieso ein "-" da greifen sollte.

                Kommentar


                • #9
                  Wenn du noch mal in die Funktion schauen magst, da steht:
                  PHP-Code:
                  ...
                  function 
                  i2h($int$group=HEX_BYTE$size=HEX_INT$sep=' - ') {
                  ... 
                  Also greift es


                  //Edit:
                  Wenn ich nur
                  PHP-Code:
                  $teil explode(" "$var); 
                  schreibe und in der Funktion
                  PHP-Code:
                  function i2h($int$group=HEX_BYTE$size=HEX_INT$sep=' ') { 
                  stehen habe, so bekomme ich folgendes als Ergebnis:
                  02000000
                  Ich muss aber leider die Leerzeichen haben und das habe ich mit dem Minuszeichen hinbekommen, nur scheints mir nicht die einfachste/beste Möglichkeit zu sein
                  Zuletzt geändert von l0c4lh05t; 22.11.2006, 12:36.

                  Kommentar


                  • #10
                    Ich hatte die Funktion noch gar nicht angesehen. Hab nur auf deine Fragestellung geantwortet. Und da war definitiv kein - zu sehen...

                    Kommentar


                    • #11
                      Original geschrieben von TobiaZ
                      Ich hatte die Funktion noch gar nicht angesehen. Hab nur auf deine Fragestellung geantwortet. Und da war definitiv kein - zu sehen...
                      Mmhkay

                      Danke, danke nochmal für die schnellen und sehr hilfreichen Antworten!!

                      Kommentar


                      • #12
                        Re: Von INT zu HEX (kleines Problem...)

                        Original geschrieben von l0c4lh05t
                        Ergebnis: 00 00 0B B9
                        Ich bräuchte aber: B9 0B 00 00
                        (Also einfach die umgekehrte Reihenfolge)
                        Weiß jemand wie ich die Reihenfolge der Gruppen umkehren kann?
                        Den selben code auf ner big-endian maschine ausführen

                        greets
                        (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                        Kommentar

                        Lädt...
                        X