IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Transposition de code


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut Transposition de code
    Bonjour,

    J'essaie de reprendre une application codée en php pour la transposer en javascript (nodejs). Je suis tombé sur une ligne de code que je ne comprends absolument pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tmp .= substr($this->cp,$i,1) ^ substr($ck,$count,1);
    Elle fait partie d'un boucle for. Bref, je sais ce que c'est que substr, mais je ne comprends pas le "^" et l'implication qu'il ya avec le second substr.
    Avez vous une idée ?

  2. #2
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Hello,

    je n'ai pas de réponse à te donner, j'aimerai bien savoir aussi...

    Je viens de faire un essai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump( 'test' ^ ' ok' );
    me retourne :

    /home/idmontch/idmontchat/Clients/gourmalex/index.php:43:string 'T
    ' (length=3)

  3. #3
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut
    A priori ça fait un xor : http://php.net/manual/fr/language.operators.bitwise.php

    Mais si je transpose ça ne javascript, je n'ai pas le même résultat du tout.

    https://www.w3schools.com/js/js_operators.asp

    Si j'analyse j'ai l'impression que le calcule des bits ne renvoie pas la même chose en php et en javascript.
    Ca va être chaud de trovuer un paliatif JS à ça :'(

  4. #4
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut
    Voilà un test très simple réalisé:

    t.php ==> b
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
      $d = "Q";
      $e = "3";
      $res = $d ^ $e;
      echo $res."\n";
    ?>
    t.js ==> 3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var b = "Q";
    var c = "3";
    var dual = b ^ c;
    console.log(dual);
    Voilà, en JS je n'ai pas le même résultat que sur php. J'ai lu un peu de doc sur bitwise et je me sens un peu largué
    car il faut jouer je pense avec des entiers 32bits en JS alors qu'en php je pense que je suis en dessous. Bref pas tout pigé quoi ...

  5. #5
    Membre habitué Avatar de daniel61
    Inscrit en
    Décembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 139
    Points : 169
    Points
    169
    Par défaut
    Semble relié au cast différent entre les 2 languages
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <?php
      $d = "Q";
      $e = "3";
      $res = $d ^ $e;
      echo $res."\n"; // b
      $res_2 = intval($d) ^ intval($e);
      echo $res_2."\n"; // 3
     
      var_dump('TEST' ^ '3ok5' );  // g*8a
      printf('%u %u %u %u', ord('T' ^ '3'), ord('E' ^ 'o'), ord('S' ^ 'k'), ord('T' ^ '5')); // 103 42 56 97
    ?>
    <script>
      var b = "Q";
      var c = "3";
      var dual = b ^ c;
      console.log(dual); // 3
     
      var dual_2 = String.fromCharCode(b.charCodeAt(0) ^ c.charCodeAt(0));
      console.log(dual_2); // b
     
      var dual3 = "";
      for(index in "TEST".split("")) {
        dual3 = dual3 + String.fromCharCode("TEST".charCodeAt(index) ^ "3ok5".charCodeAt(index));
      }
      console.log(dual3); // g*8a
     
      for(index in dual3.split("")) {
        console.log(dual3.charCodeAt(index)); // 103 42 56 97
      }
    </script>

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var dual = String.fromCharCode(b.charCodeAt(0) ^ c.charCodeAt(0));
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut
    Bonjour,

    je viens d'essayer de comprendre pourquoi ça marche en lisant la doc des fonctions utilisées.
    mais pour le moment je ne comprends pas. Je vais y passer un peu de temps car même si ça fonctionne maintenant,
    il semble que le code à réécrire est bourré de ce type de ligne de code. Alors je veux comprendre.

    Des tests pratiques avec ma table ASCII en parallèle me permettra sans doute de comprendre tout ça.

    Merci en tout cas, ça fonctionne

  8. #8
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Merci les gars pour ces infos, je viens d'apprendre un truc

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Transposition <a href=""></a> en code behind C#
    Par CyrusAA dans le forum ASP.NET
    Réponses: 7
    Dernier message: 23/09/2015, 16h30
  2. Transposition code VBA en SQL
    Par castours dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/07/2011, 16h44
  3. De la rapidité du code
    Par jfloviou dans le forum Contribuez
    Réponses: 233
    Dernier message: 29/05/2009, 02h17
  4. [Confirmation] Transposition de code
    Par Arnaud F. dans le forum MATLAB
    Réponses: 5
    Dernier message: 14/12/2007, 11h35
  5. Réponses: 1
    Dernier message: 09/12/2006, 16h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo