c#xor功能

ygd*_*tdh 5 c# xor

我发现这个代码使用or运算符来反转字符串,

public static string ReverseXor(string s)
{

      if (s == null) return null; 
      char[] charArray = s.ToCharArray(); 
      int len = s.Length - 1;

      for (int i = 0; i < len; i++, len--)
      { 
            charArray[i] ^= charArray[len]; 
            charArray[len] ^= charArray[i]; 
            charArray[i] ^= charArray[len]; }

       //some more code
}
Run Code Online (Sandbox Code Playgroud)

问题是我对for循环中发生的事情不了解,有人可以向我解释一下吗?

谢谢.

Mit*_*eat 5

以下是如何在没有临时中间变量的情况下交换两个值A,B:

A = A Xor B
B = A Xor B
A = A Xor B
Run Code Online (Sandbox Code Playgroud)

参考:XOR交换算法

这是一个8位的例子:

A = 10010010
B = 01111001

A = A Xor B = 11101011
B = A Xor B = 10010010
A = A Xor B = 01111001
Run Code Online (Sandbox Code Playgroud)