我正在将加密函数从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));
但它得到了不同的结果。
答案 0 :(得分:22)
您无需将其转换回字符串。按位运算符处理数字。 1 ^ 3
10 与1 ^ 11
相同 2 与1 ^ 10
3 相同。
//this should work for single characters.
x = String.fromCharCode(y.charCodeAt(0) ^ z.charCodeAt(0));
答案 1 :(得分:10)
toString(2)
会转换为二进制字符串,但您希望处理数字类型。
只需删除toString(2)
部分即可。