JavaScript - 对字符串按位异或?

发布于 2025-01-04 16:54:47 字数 316 浏览 0 评论 0原文

我正在将加密函数从 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

多彩岁月 2025-01-11 16:54:47

您不需要将其转换回字符串。位运算符对数字进行操作。 1 ^ 3101 ^ 1121 ^ 10 相同3

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

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));
一杆小烟枪 2025-01-11 16:54:47

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文