C# 中的异或字节

问题描述 投票:0回答:1

我最近看到了一种使用 XOR 交换 2 个变量的巧妙方法,并决定在 C# 中使用字符串进行尝试,虽然我设法做到了这一点,但我有点担心在 XOR 操作之后我必须将 int 转换为 byte。这是代码:

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# 中转换基元时,实际上会发生什么?是否有为其分配新的内存?

c# .net string byte xor
1个回答
0
投票

随着 C# 中元组的引入,xor

技巧实际上不再像以前那么简洁了:

var string1 = Encoding.ASCII.GetBytes("Hello world1!"); var string2 = Encoding.ASCII.GetBytes("Hello world2!"); (string1, string2) = (string2, string1); Console.WriteLine(Encoding.ASCII.GetString(string1)); Console.WriteLine(Encoding.ASCII.GetString(string2));
元组语法解释于

here

© www.soinside.com 2019 - 2024. All rights reserved.