Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaScript - Bitwise XOR on strings?

I'm translating an encryption function from PHP to JS.

PHP: (Both $y and $z are ASCII characters, so $x is inherently an ASCII oddity.)

 $x = ($y ^ $z);

Doing the same in JS results in $x = 0.

I tried:

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

But it gets to a different result.

like image 946
Silviu-Marian Avatar asked Feb 11 '12 02:02

Silviu-Marian


2 Answers

The toString(2) converts to a binary String, but you want to work on the Number type.

Simply drop the toString(2) part and it should work.

like image 44
copy Avatar answered Oct 01 '22 17:10

copy


You don't need to convert it back to a string. Bitwise operators work on numbers. 1 ^ 310 is the same as 1 ^ 112 is the same as 1 ^ 103.

//this should work for single characters.
x = String.fromCharCode(y.charCodeAt(0) ^ z.charCodeAt(0));
like image 61
zzzzBov Avatar answered Oct 01 '22 18:10

zzzzBov