2012-02-11 7 views
12

Estoy traduciendo una función de encriptación de PHP a JS.JavaScript - Bitwise XOR en cadenas?

PHP: (Ambos $ y $ y z son caracteres ASCII, lo que $ x es inherentemente una rareza ASCII.)

$x = ($y^$z); 

Hacer lo mismo en los resultados de JS en $ x = 0.

Intenté:

$x = String.fromCharCode(($y).charCodeAt(0).toString(2)^($z).charCodeAt(0).toString(2)); 

Pero se llega a un resultado diferente.

Respuesta

21

No es necesario volver a convertirlo en una cadena. Los operadores bit a bit trabajan en números. 1^3 es la misma que 1^11 es la misma que 1^10 .

//this should work for single characters. 
x = String.fromCharCode(y.charCodeAt(0)^z.charCodeAt(0)); 
+0

Gracias! Eso lo hizo. –

9

El toString(2) se convierte en una cadena binaria , pero que desea trabajar en el tipo de número.

Simplemente deje caer la pieza toString(2) y debería funcionar.