Discussion: Transposition de code

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2003
    Messages : 322
    Points : 137
    Points
    137

    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 confirmé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    mars 2007
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    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 : 389
    Points : 588
    Points
    588

    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
    Inscrit en
    septembre 2003
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2003
    Messages : 322
    Points : 137
    Points
    137

    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
    Inscrit en
    septembre 2003
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2003
    Messages : 322
    Points : 137
    Points
    137

    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
    122
    Détails du profil
    Informations forums :
    Inscription : décembre 2006
    Messages : 122
    Points : 146
    Points
    146

    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
    28 567
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 28 567
    Points : 42 481
    Points
    42 481

    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
    Inscrit en
    septembre 2003
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2003
    Messages : 322
    Points : 137
    Points
    137

    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 confirmé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    mars 2007
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    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 : 389
    Points : 588
    Points
    588

    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, 17h30
  2. Transposition code VBA en SQL
    Par castours dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/07/2011, 17h44
  3. De la rapidité du code
    Par jfloviou dans le forum Contribuez
    Réponses: 233
    Dernier message: 29/05/2009, 03h17
  4. [Confirmation] Transposition de code
    Par Arnaud F. dans le forum MATLAB
    Réponses: 5
    Dernier message: 14/12/2007, 12h35
  5. Réponses: 1
    Dernier message: 09/12/2006, 17h58

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