JavaScript - Побитовое XOR на строках?

Я переводю функцию шифрования из PHP в JS.

PHP: (Оба $y и $z являются символами ASCII, поэтому $x по своей сути является ASCII-нечетностью.)

 $x = ($y ^ $z);

Выполнение этого же результата в JS приводит к $x = 0.

Я пробовал:

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

Но он получает другой результат.

Ответ 1

Вам не нужно преобразовывать его в строку. Побитовые операторы работают с числами. 1 ^ 3 10 - это то же самое, что 1 ^ 11 2 совпадает с 1 ^ 10 3.

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

Ответ 2

toString(2) преобразуется в двоичную строку, но вы хотите работать с типом Number.

Просто отпустите часть toString(2), и она должна работать.