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)
, и она должна работать.