Daniel: Zahl=>Hexzahl=>Dualzahl und zurück

Hi,
ich habe schon in SELFHTML bzw SELFPHP gesucht und nix dazu gefunden.
Ich habe nur sachen gefunden um Integer in String etc zu "verwandeln"
aber nichts um die zahlen z.B. in Dualzahlen umzuwandeln, bzw in den
ASCII Code. also
0= 0000 0000
1= 0000 0001
2= 0000 0010
...
oder in Hexadezimal anstatt dual. ich möchte das ganze zum ver und
entschlüsseln nehmen, also der User gibt eine oder einen String ein und
dieser wird dann Zeichenweise in Dual umgewandelt und es wird jeweils
+100 gemacht (oder so) und das ganze wird dann in die DB gespeichert.
wird die DB ausgelesen soll das wieder "zeichenweise" ablaufen, die -100
und man sieht die original eingabe. ist das überhaupt möglich? wenn ja
wie?

MfG

  1. Hi,

    wenn ja

    dechex() wandelt z.B. dezimal in hexadezimal. Weitre Varianten findest Du im PHP-Manual an selbiger Stelle. ;-)

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    1. Hi,

      dechex() wandelt z.B. dezimal in hexadezimal. Weitre Varianten findest Du im PHP-Manual an selbiger Stelle. ;-)

      thx, mit Zahlen funktionierts, aber leider nicht mit Buchstaben und
      vorallendingen funktioniert das mit der addition nicht sauber da strings
      zurückgegeben werden und diese bei der addition wie Integers benutzt
      werden. Wie könnte man das lösen? Ich hab irgendwo mal was gelesen wie
      man Buchstaben in dual-code umwandeln konnte. finds aber nichtmehr.

      MfG

      1. hi,

        mit Zahlen funktionierts, aber leider nicht mit Buchstaben und
        vorallendingen funktioniert das mit der addition nicht sauber da strings
        zurückgegeben werden und diese bei der addition wie Integers benutzt
        werden.

        dann addiere doch schon vor dem umwandeln deine _dezimalen_ werte, und wandle dann das ergebnis erst in hex um.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hi,
          hab das problem jetzt so "gelöst":

            
          <html>  
            <head>  
              <title>Codierung</title>  
            </head>  
            <body>  
            <form action="codierung.php" method="post">  
            <input type="text" name="text">  
            <input type="submit" name="submit" value="codierung">  
            </form>  
          
          
            
          <?  
            if(@$_POST['submit']<>null)  
            {  
              $Text = $_POST['text'];  
              $lang = strlen($Text);  
              echo "Text: $Text<br>";  
              for ($z=0; $z<$lang; $z++)  
              {  
                $Textteil = substr($Text, $z);  
                $Textteil = ord($Textteil);  
                echo "Textgewandelt: $Textteil<br>";  
                $Code = "5";  
                $Code = ord($Code);  
                $TextteilCode[$z] = $Textteil+$Code;  
              }  
              $anzahl = count($TextteilCode);  
              $TextDecode = "";  
              for ($z=0; $z<$anzahl; $z++)  
              {  
                $Textteil = $TextteilCode[$z];  
                $Code = "5";  
                $Code = ord($Code);  
                $Decoded = $Textteil - $Code;  
                $Decoded = chr($Decoded);  
                $TextDecode = $TextDecode.$Decoded;  
              }  
              echo "Decodiert: $TextDecode";  
            }// if(@$_POST['submit']<>null)  
            ?>  
          
          
            
            </body>  
          </html>  
          
          

          Wer hat Verbesserungsvorschläge?

          1. echo $begrueszung;

            Wer hat Verbesserungsvorschläge?

            yep.

            if(@$_POST['submit']<>null)

            Wenn das Formular im IE mit Enter abgesendet wird, dann wird der Submit-Button als nicht gedrückt gewertet und ist damit nicht in den abgesendeten Formulardaten enthalten. Also teste lieber auf das Eingabe-Element. [1]
            Außerdem ist ein Test mittels isset() besser als deine Konstruktion

            if (isset($_POST['text']))

            Die Variable $TextteilCode wird nicht explizit initialisiert. Ihr werden zwar in der ersten for-Schleife Werte übergeben, und damit wird sie auch angelegt, jedoch wird die Schleife nicht durchlaufen, wenn im Formular nichts eingegeben wurde. (strlen($Text) bzw. $lang ist dann 0)
            Und bei

            $anzahl = count($TextteilCode);

            gibt es dann eine Notice (error_reporting beim Entwickeln immer auf E_ALL stellen!)

            $TextDecode = $TextDecode.$Decoded;

            dies lässt sich auch so schreiben:

            $TextDecode .= $Decoded;

            echo "$verabschiedung $name";

            [1] Alternativ geht auch ein Hidden-Element, das den gleichen Namen wie der Submit-Button bekommt und vor diesem anzuordnen ist. Wird das Formular mit Enter abgesendet, bekommst du nur das Hidden-Element. Beim Absenden mit Button-Klick wird der Button-Wert dann den Hidden-Wert überlagern.

            1. Hi,
              danke für die Verbesserungsvorschläge, hab das meiste jetzt umgesetzt
              nur eines möcht ich noch wissen.

              Und bei

              $anzahl = count($TextteilCode);

              gibt es dann eine Notice (error_reporting beim Entwickeln immer auf E_ALL stellen!)

              Wie geht das? hab das schon mehrfach gelesen und jetzt intressierts mich.

              $TextDecode = $TextDecode.$Decoded;

              dies lässt sich auch so schreiben:

              $TextDecode .= $Decoded;

              gut zu wissen, ist wie $Variable++ ne nette abkürzung.

              MfG

              1. Hi,

                Wie geht das? hab das schon mehrfach gelesen und jetzt intressierts mich.

                error_reporting(E_ALL);

                Gruß, Cybaer

                --
                Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
                1. Hi,
                  ich habe den Quelltext jetzt überarbeitet hier der momrntane Quelltext:

                    
                  <html>  
                    <head>  
                      <title>Codierung</title>  
                    </head>  
                    <body>  
                    <form action="codierung.php" method="post">  
                    <input type="text" name="text">  
                    <input type="submit" name="submit" value="codierung">  
                    </form>  
                  
                  
                    
                    <?  
                    error_reporting(E_ALL);  
                    if(isset($_POST['text']))  
                    {  
                      $Text = $_POST['text'];  
                      $lang = strlen($Text);  
                      $TextteilCode = false;  
                      echo "Text: $Text<br>";  
                      for ($z=0; $z<$lang; $z++)  
                      {  
                        $Textteil = substr($Text, $z);  
                        $Textteil = ord($Textteil);  
                        $Code = "5";  
                        $Code = ord($Code);  
                        $TextteilCode[$z] = $Textteil+$Code;  
                      }  
                      if ($TextteilCode <> false)  
                      {  
                        $anzahl = count($TextteilCode);  
                        $TextCodiert ="";  
                        for ($z=0; $z<$anzahl; $z++)  
                        {  
                          $TextCodiert .= $TextteilCode[$z];  
                        }  
                        echo "Textgewandelt: $TextCodiert<br>";  
                        $TextDecode = "";  
                        for ($z=0; $z<$anzahl; $z++)  
                        {  
                          $Textteil = $TextteilCode[$z];  
                          $Code = "5";  
                          $Code = ord($Code);  
                          $Decoded = $Textteil - $Code;  
                          $Decoded = chr($Decoded);  
                          $TextDecode .= $Decoded;  
                        }// for ($z=0; $z<$anzahl; $z++)  
                        echo "Decodiert: $TextDecode";  
                      }// if ($TextteilCode <> false)  
                    }// if(@$_POST['submit']<>null)  
                    ?>  
                  
                  
                    
                    </body>  
                  </html>  
                  
                  

                  Weitere Verbesserungsvorschläge erwünscht.

                  MfG

              2. echo $begrueszung;

                gibt es dann eine Notice (error_reporting beim Entwickeln immer auf E_ALL stellen!)

                Wie geht das? hab das schon mehrfach gelesen und jetzt intressierts mich.

                Es gibt mehrere Möglichkeiten.

                Eine hat Cybaer schon genannt.

                Zum anderen ist es eine gute Idee, diese Option auf dem lokalen Entwicklungssystem gleich in der php.ini einzustellen. Da steht meist eine Zeile:

                error_reporting = E_ALL & ~E_NOTICE

                Dort muss dann das  & ~E_NOTICE weg.

                Und zum dritten kann man, wenn PHP als Modul läuft und die Apache-Konfiguration es zulässt, PHP-Optionen per Verzeichnis in der meist .htaccess genannten Datei einstellen. Hier muss allerdings der Zahlenwert für E_ALL verwendet werden:

                php_value error_reporting 2047

                Ob die Einstellungen wirken verrät dir dann phpinfo(); (Da muss auch der Zahlenwert auftauchen.)

                (Unter Windows gibt es noch die Möglichkeit, die Registry zu verwenden, aber das lass ich hier mal weg.)

                echo "$verabschiedung $name";

                1. Hi,
                  ich habe grad mal phpinfo (wie schon so oft) ausgeführt da steht unter

                  Configuration
                  PHP Core

                  bei error_reporting sowohl für Local Value als auch Master Value 2047
                  heißt das ich kann mir den part in der php-Datei sparen?

                  MfG

                  1. echo $begrueszung;

                    ich habe grad mal phpinfo (wie schon so oft) ausgeführt da steht unter

                    Configuration
                    PHP Core

                    bei error_reporting sowohl für Local Value als auch Master Value 2047
                    heißt das ich kann mir den part in der php-Datei sparen?

                    Ja, das kannst du auch durch

                    echo $a;

                    prüfen. Vorausgesetzt, $a existiert nicht, musst du dann eine "Notice: Undefined variable: a in ..." zu sehen bekommen.

                    echo "$verabschiedung $name";

                    1. Hi,

                      Ja, das kannst du auch durch
                        echo $a;
                      prüfen. Vorausgesetzt, $a existiert nicht, musst du dann eine "Notice: Undefined variable: a in ..." zu sehen bekommen.

                      ja, solche, oder so ähnliche, Fehlermeldungen bekomm ich ab und zu, dann
                      ein @ hin und ruhe ist. Natürlich nur wenns trotzdem Funktioniert.

                      MfG

                      1. hi,

                        ja, solche, oder so ähnliche, Fehlermeldungen bekomm ich ab und zu, dann
                        ein @ hin und ruhe ist. Natürlich nur wenns trotzdem Funktioniert.

                        nein, wenn du sauber programmieren willst, auch dann nicht.

                        gruß,
                        wahsaga

                        --
                        /voodoo.css:
                        #GeorgeWBush { position:absolute; bottom:-6ft; }
                        1. Hi,

                          nein, wenn du sauber programmieren willst, auch dann nicht.

                          Was hatt denn das damit zu tun ob ich sauber bin oder nicht. Da kommts
                          wohl eher drauf an wie oft ich dusche?

                          Jane is klar. ich weis das es ne dumme Angewohnheit von mir ist. wills
                          mir ja auch abgewöhnen, genauso wie das rauchen. wobei ich mir das mit
                          dieser @Angewohnheit eher schaffe mir abzugewöhnen, es ist nur einfach
                          eine schnelle Lösung, sicherlich nicht valide.

                          MfG

      2. Hi,

        thx, mit Zahlen funktionierts, aber leider nicht mit Buchstaben und

        ? Wandle halt die Buchstaben in Zahlencodes um.

        Wie könnte man das lösen?

        Indem man eine Hex-Kennung vor den "String" packt:

        echo '0x'.dechex(127)+1;

        gibt 128 aus (127+1).

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!