JavaScript - 对字符串按位异或?
我正在将加密函数从 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));
但它得到了不同的结果。
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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您不需要将其转换回字符串。位运算符对数字进行操作。
1 ^ 3
10 与1 ^ 11
2 与1 ^ 10 相同
3。You don't need to convert it back to a string. Bitwise operators work on numbers.
1 ^ 3
10 is the same as1 ^ 11
2 is the same as1 ^ 10
3.toString(2)
转换为二进制 String,但您想要处理 Number 类型。只需删除
toString(2)
部分即可。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.