entschlüsselungs funktion

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

  • entschlüsselungs funktion

    Hallo,

    Ich habe ein PHP-Formular mit mehreren Checkboxen. Diese Checkboxen haben verschiede Werte (1,2,4,8,16 usw). Die Werte der selektierten Boxen werden addiert zu einem Schlüssel. So wie zb bei der Berechnung vom CHMOD-Code.

    Meine Frage ist nun, ob ich diesen Code auch wieder entschlüsseln kann. Also ob es dafür eine funktion gibt, oder ob ich "manuell" lösen muss.

    Am Ende möchte ich ein weiteres Formular schreiben im dem ich den Schlüssel eingebe und dann die einzelnen Werte angezeigt bekomme.

    Bin dankbar für jede Hilfe.
    Zuletzt geändert von hugo1970; 11.01.2007, 08:52.

  • #2
    PHP-Code:
    <?php
    $string 
    "382738";
    $key[] = array();
    while (
    strlen($string) > 0) {
      
    $key[] = substr($string01);
      
    $string substr($string1);
    }
    ?>
    So in etwa?
    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

    Kommentar


    • #3
      Original geschrieben von ArSeN
      PHP-Code:
      <?php
      $string 
      "382738";
      $key[] = array();
      while (
      strlen($string) > 0) {
        
      $key[] = substr($string01);
        
      $string substr($string1);
      }
      ?>
      So in etwa?
      Hmm danke schonmal dafür, aber das verstehe ich leider nicht (bin leider noch php Anfänger). Aber ich werde noch bisschen rum googlen. Ich kann ja mal ein Beispiel aufzeigen:

      Also gehen wir mal davon aus wir haben den Wert 26 (welcher sich aus 2+8+16 ergibt). Als Ergebnis möchte ich angezeigt bekommen, dass der Wert eben aus den Werten 2+4+16 besteht.

      Kommentar


      • #4
        Re: entschlüsselungs funktion

        Original geschrieben von hugo1970
        Hallo,

        Ich habe ein PHP-Formular mit mehreren Checkboxen. Diese Checkboxen haben verschiede Werte (1,2,4,8,16 usw). Die Werte der selektierten Boxen werden addiert zu einem Schlüssel. So wie zb bei der Berechnung vom CHMOD-Code.

        Meine Frage ist nun, ob ich diesen Code auch wieder entschlüsseln kann. Also ob es dafür eine funktion gibt, oder ob ich "manuell" lösen muss.

        Am Ende möchte ich ein weiteres Formular schreiben im dem ich den Schlüssel eingebe und dann die einzelnen Werte angezeigt bekomme.

        Bin dankbar für jede Hilfe.
        das ist ja einfache Bitoperation, du brauchst nur zu prüfen, an welcher Stelle das Bit gesetzt ist, dann weisst du, ob dein Checkbox gesetzt ist oder nicht.

        Kommentar


        • #5
          Also gehen wir mal davon aus wir haben den Wert 26 (welcher sich aus 2+8+16 ergibt). Als Ergebnis möchte ich angezeigt bekommen, dass der Wert eben aus den Werten 2+4+16 besteht.
          Das Tituliere ich mal als schlichtweg unmöglich.

          "Wenn ich dir sage, gib mir mal die Einzelkeys aus 23" weißt du ja auch nicht, ob ich 20 und 3, oder 10 und 11 und 2, oder oder genommen hab. Da sehe ich keinerlei Sinn drinne.
          Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

          Kommentar


          • #6
            Dein Wert setzt sich also aus Zweier-Potenzen zusammen, und du möchtest quasi herausfinden welche "Bits" in deinem Wert gesetzt sind.

            Also in Schleife über Zweier-Potenzen von 1 bis $wert laufen, und mittels bitweisem UND verknüpfen.

            PHP-Code:
            $wert 26;

            for(
            $i=1$i<=$wert$i*=2) {
              if(
            $wert $i) {
                echo 
            $wert.' enthält '.$i."\n";
              }
              else {
                echo 
            $wert.' enthält '.$i." nicht\n";
              }

            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Original geschrieben von ArSeN
              Das Tituliere ich mal als schlichtweg unmöglich.

              "Wenn ich dir sage, gib mir mal die Einzelkeys aus 23" weißt du ja auch nicht, ob ich 20 und 3, oder 10 und 11 und 2, oder oder genommen hab. Da sehe ich keinerlei Sinn drinne.
              Oh doch, wenn es wie im Ausgangssituation definiert ist, dann ist

              23 = 16 + 4 + 2 + 1 = 10111 -> Bit 0, 1, 2 und 4 ist gesetzt -> Wenn er 5 Checkboxes hat dann ist der 4. nicht gesetzt.

              Kommentar


              • #8
                Ja, aber ich glaube 2+4+16 waren jetzt Zufallszahlen als Beispiel, oder nicht?
                Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

                Kommentar


                • #9
                  Ne, die sind schon genau definiert. asp2php hat schon recht. Ich muss das jetzt nur in PHP umsetzen ^^.

                  Wenn ich schon vorher gewusst hätte, dass man sowas Bitoperationen nennt, dann hätte ich mich wohl auch gleich deutlicher ausgedrückt :P

                  Kommentar


                  • #10
                    Achso, dann hab ich das falsch verstanden. Ich ziehe meine Aussage zurück und behaupte das Gegenteil.
                    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

                    Kommentar


                    • #11
                      PHP-Code:
                      <?php
                      //hier definiere ich einzelne bits
                      define("box1"<< 1); 
                      define("box2"<< 2); 
                      define("box3"<< 4);
                      define("box4"<< 8);
                      define("box5"<< 16);  

                      $test "10111";

                      //hier überprüfe ich ob einzelne bits gesetzt sind
                      if(box1 $test) {echo "box1 ";} 
                      if(
                      box2 $test) {echo "box2 ";} 
                      if(
                      box3 $test) {echo "box3 ";} 
                      if(
                      box4 $test) {echo "box4 ";} 
                      if(
                      box5 $test) {echo "box5 ";} 
                      ?>
                      Also das hab ich bisher. Leider klappt es garnicht :P. Ich dachte so gibt er "box1 box2 box3 box5" aus, was aber nicht der Fall ist. Er zeigt mir stattdessen "box1 box2 box3 box4" an.

                      Kommentar


                      • #12
                        sag mal,

                        - was schiebst du denn da in define, bis zu 16 stellen?
                        - warum $test als String

                        ich würde sagen, dass du die Grundlagen in PHP nochmals durchkaust, bevor du irgendwas sonst machst

                        Kommentar


                        • #13
                          OffTopic:
                          Hab ich schon 'ne Lösung gepostet, oder hab ich schon 'ne Lösung gepostet?
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            Original geschrieben von wahsaga
                            Dein Wert setzt sich also aus Zweier-Potenzen zusammen, und du möchtest quasi herausfinden welche "Bits" in deinem Wert gesetzt sind.

                            Also in Schleife über Zweier-Potenzen von 1 bis $wert laufen, und mittels bitweisem UND verknüpfen.

                            PHP-Code:
                            $wert 26;

                            for(
                            $i=1$i<=$wert$i*=2) {
                              if(
                            $wert $i) {
                                echo 
                            $wert.' enthält '.$i."\n";
                              }
                              else {
                                echo 
                            $wert.' enthält '.$i." nicht\n";
                              }

                            Das hab ich garnicht gesehen . Vielen Dank, das ist genau das was ich brauche.

                            Kommentar


                            • #15
                              OffTopic:
                              wahsaga, die multiplikation mit zwei ist wiederum ein schönes bitshifting wert, obfuszierenshalber

                              Kommentar

                              Lädt...
                              X