Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Shift in PHP

  1. #1
    Registrierter Benutzer Avatar von Giuly
    Registriert seit
    28.04.2003
    Ort
    HB-Nord
    Beiträge
    201

    Shift in PHP

    Hi,
    ich versuche grade das hier in PHP nachzuschreiben (JavaScript):
    Code:
    for(var i=0;i<c.length;)s+=String.fromCharCode(((c.charCodeAt(i++)&15)<<4)|(c.charCodeAt(i++)&15));document.write(s);
    Leider blieben meine Versuche ohne Erfolg:
    Code:
    for($i=0;i<len($c);)
    {
      $s .= $c[i++]&15<<4|$c[i++]&15;
    }
    Kann mir vielleicht jemand sagen, wie man das richtig macht?

    MfG

  2. #2
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von Giuly Beitrag anzeigen
    Kann mir vielleicht jemand sagen, wie man das richtig macht?

    MfG
    Geht viel einfacher. Dafür gibt es schon vorgefertigte Funktionen.
    Schau dir mal strlen(), ord() und chr() an.

    Den ersten Buchstaben erreichst Du mit $mein_text[0].
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  3. #3
    Registrierter Benutzer Avatar von Giuly
    Registriert seit
    28.04.2003
    Ort
    HB-Nord
    Beiträge
    201
    Funktioniert auch irgendwie nicht:
    Code:
    $c="SlVhGdvMF<s^P]";
    $s="";
    for($i=0;i<strlen($c);)
    {
      //$s .= chr(ord($c[i++])&15<<4)|ord($c[i++])&15);
      $s.=chr(((ord(c[i++])&15)<<4)|(ord(c[i++])&15));
    }
    echo $s;
    Geändert von Giuly (14-03-2007 um 09:55 Uhr)

  4. #4
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von Giuly Beitrag anzeigen
    Funktioniert auch irgendwie nicht:
    Code:
    $c="SlVhGdvMF<s^P]";
    $s="";
    for($i=0;i<strlen($c);)
    {
      //$s .= chr(ord($c[i++])&15<<4)|ord($c[i++])&15);
      $s.=chr(((ord(c[i++])&15)<<4)|(ord(c[i++])&15));
    }
    echo $s;
    Kopieren einsetzen geht nicht.
    Eine Pipe kennt PHP nicht.
    Mit << und & kannst Bitverschiebung machen.
    Solche Umwege brauchst Du aber in PHP nicht zu gehen (oder selten).

    http://www.php.net/manual/en/function.chr.php
    http://www.php.net/manual/en/function.ord.php
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  5. #5
    Registrierter Benutzer Avatar von Giuly
    Registriert seit
    28.04.2003
    Ort
    HB-Nord
    Beiträge
    201
    Tut mir leid, aber Bitverschiebung war noch nie mein Fall (Ich versuche immer noch in C nachzuvollziehen, wie man mit 7 die Optionen 3 und 4 setzt, Stichwort Chmod u.a.)
    Vielleicht könntest du mir erklären, was &15 und <<4 machen. Das einzige, was ich weiß, ist, dass das irgendwas binäres macht. Das war's. Ausserdem wäre nicht schlecht, wenn du mir sagst, wie ich das OR (Oder ist | in JavaScript kein OR?) umgeht.

    MfG

    Also <<4 ist Multiplikation mit 16 in Dezimal. &15 kann man mit intval(substr(strval(decbin(ord(c[i++]), -4, 4)))); machen, aber die Pipe?
    Geändert von Giuly (14-03-2007 um 19:31 Uhr)

  6. #6
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von Giuly Beitrag anzeigen
    Tut mir leid, aber Bitverschiebung war noch nie mein Fall (Ich versuche immer noch in C nachzuvollziehen, wie man mit 7 die Optionen 3 und 4 setzt, Stichwort Chmod u.a.)
    Vielleicht könntest du mir erklären, was &15 und <<4 machen. Das einzige, was ich weiß, ist, dass das irgendwas binäres macht. Das war's. Ausserdem wäre nicht schlecht, wenn du mir sagst, wie ich das OR (Oder ist | in JavaScript kein OR?) umgeht.

    MfG

    Also <<4 ist Multiplikation mit 16 in Dezimal. &15 kann man mit intval(substr(strval(decbin(ord(c[i++]), -4, 4)))); machen, aber die Pipe?
    bin auch kein JS Spezialist. Das mußt du mal hier im JS fFrum nachfragen.
    Weiterhin empfehle ich dir
    http://www.php.net/manual/en/index.php
    durchzuackern.

    Das was Du suchst ist && und ||.
    Da Du von C kommst noch ein Tip.
    Es ist günstiger nach einer Funktion für einen speziellen Zweck zu suchen,
    als wie in C irgendetwas zu konstruieren zu müssen.

    Das geht zwar, ist aber meist langsamer und wartungsaufwendiger.
    In PHP gibt es für fast jeden Quatsch irgendeine Funktion.
    Einfach mal eine rausssuchen und mit echo oder print austesten.
    Dein Programm ist in PHP ein Dreizeiler (nur so als Anmerkung ).
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •