Décalage de bit sur un entier non signé..

Décalage de bit sur un entier non signé.. - PHP - Programmation

Marsh Posté le 30-08-2008 à 00:55:09    

yop,

 


j'ai un script en JS que je voudrais convertir pour l'utiliser en PHP, or dedans il y a un décalage d'un entier non signé à faire ce qui est impossible en PHP, mais peut etre qu'il y a une astuce que je n'ai pas vu..

 

voilà le code JS :

 
Code :
  1. function bla(arg0)
  2. {
  3.     var cst = 'azertyuiopqsdfgh';
  4.     var v3 = '';
  5.     var v4 = 7;
  6.     while (v4 >= 0)
  7.     {
  8.       var v5 = arg0 >> v4 * 4 & 15;
  9.       if ((v5 >> 30 & 1) != v5 >>> 31)
  10.       {
  11.           throw 'Overflow ' + v5;
  12.       }
  13.       v3 += cst.charAt(v5 & -1);
  14.       --v4;
  15.     }
  16.     return v3;
  17. }
 

et voilà mon code php :

 
Code :
  1. function bla($arg0)
  2. {
  3.     $cst = 'azertyuiopqsdfgh';
  4.     $v3 = '';
  5.     $v4 = 7;
  6.     while ($v4 >= 0)
  7.     {
  8.       $v5 = $arg0 >> $v4 * 4 & 15;
  9.       if (($v5 >> 30 & 1) != $v5 >>> 31)
  10.       {
  11.           throw 'Overflow ' . $v5;
  12.       }
  13.       $v3 .= $cst[$v5 & -1];
  14.       --$v4;
  15.     }
  16.     return $v3;
  17. }
 

Si vous avez une idée... Merci !


Message édité par Surfoo le 30-08-2008 à 00:58:01
Reply

Marsh Posté le 30-08-2008 à 00:55:09   

Reply

Marsh Posté le 30-08-2008 à 03:07:57    

C'est un encodeur base64 que tu fais ?  
Par contre concernant ta réponse, j'ai un doute concernant la capacité de PHP à gérer ce genre de cas :/
Jvais dire une connerie surement, mais en utilisant les puissances de deux pour "décaler" les bits, ca donnerait quoi ?
 
[:_edit]  
mate dans les commentaires des opérateurs PHP, ya certaines soluc qui pourraient convenir : http://fr3.php.net/language.operators.bitwise


Message édité par SICKofitALL le 30-08-2008 à 03:10:48

---------------
We deserve everything that's coming...
Reply

Marsh Posté le 30-08-2008 à 11:53:23    

super noms de variables.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed