PHP中的^代表什么?

8

我在修改一个应用程序时发现了这行代码:

substr($sometext1 ^ $sometext2, 0, 512);

^ 是什么意思?

7个回答

8

^ 是位异或运算符。对于值中的每个位,它会查看另一个值中是否相同; 如果相同,则在其位置输出0,否则输出1。例如:

  00001111
^ 01010101
  --------
  01011010

这在字符串上是如何工作的?(参见Michael Borgwardt的回答 - Peter Mortensen

7

异或 (exclusive OR)

$a ^ $b 表示将在 $a 或 $b 中被设置的位,但不是同时在 $a 和 $b 中被设置的位进行设置。


6

这是一个位运算符(bitwise operator)

例如:

"hallo" ^ "hello"

它输出ASCII值#0 #4 #0 #0 #0'a' ^ 'e' = #4)。

我很难理解ASCII值,如果我们将a和e作为二进制等价物,如下所示: a=01100101 e=01100001

xor=00000100这样对吗?
- chicane

2

2
在 PHP 中,^ 表示“按位异或”。您的代码将两个字符串进行异或运算,然后最多返回前 512 个字符。
换句话说,它做了这个操作:
return (at most the first 512 characters of (someText1 XOR someText2))

@Webdestroya:当然是512啦 :) - 那是个打错了,谢谢。+1 :) - Cam

2
在PHP中,这是位或运算符 - 它也适用于字符串。 点击此处了解更多信息。

0

^匹配字符串的起始位置。在基于行的工具中,它匹配任何行的起始位置。


那将是一个正则表达式。 - Nils
由于现在异或的是第一个不匹配的字符,因此它将显示为1。我猜这取决于原始代码试图实现什么 - 基于这个“这是做什么”的例子..我们当然需要更多的信息 - 而不是“这个”^“字符是做什么”。 - huh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接