最近,我看到了一种使用XOR交换2个变量的巧妙方法,并决定在c#中尝试使用字符串交换,尽管我成功地做到了这一点,但我有点担心在XOR操作后必须将int转换为字节。这是代码:
var string1 = Encoding.ASCII.GetBytes("Hello world1!");
var string2 = Encoding.ASCII.GetBytes("Hello world2!");
for (var i = 0; i < string1.Length; i++)
{
string1[i] = (byte)(string1[i] ^ string2[i]);
}
for (var i = 0; i < string2.Length; i++)
{
string2[i] = (byte)(string1[i] ^ string2[i]);
}
for (var i = 0; i < string1.Length; i++)
{
string1[i] = (byte)(string2[i] ^ string1[i]);
}
Console.WriteLine(Encoding.ASCII.GetString(string1));
Console.WriteLine(Encoding.ASCII.GetString(string2));
有更好的方法吗?当我们在做这件事的时候,当你在C#中投射基元时,实际会发生什么?有没有新的内存被分配给它?