Я хочу применить 64 операции XOR двухбайтового массива. Правильный ли это подход с использованием unsafe
Я попробовал следующий подход без использования unsafe
. но я хочу немного быстрее, чем это
for (int i=0; i< oldBlock.Length;i++)
{
{
oldblock[i] ^= (newblock[i]);
}
Ниже операции XOR пропустить последние байты, как показано ниже, код XOR 8 байтов каждый раз.
Как это сделать.
static void Main(string[] args)
{
byte[] a = new byte[10];
byte[] b = new byte[10];
Random r = new Random();
r.NextBytes(a);
a.CopyTo(b, 0);
XOr64(a, b);
foreach (byte c in a)
{
Console.WriteLine(c);
}
Console.ReadKey();
}
public static unsafe void XOr64(byte[] oldBlock, byte[] newblock)
{
try
{
fixed (byte* byteA = oldBlock)
fixed (byte* byteB = newblock)
{
long* ppA = (long*)byteA;
long* ppB = (long*)byteB;
for (int p = 0; p < oldBlock.Length/8; p++)
{
*ppA ^= *ppB;
ppA++;
ppB++;
}
}
}
catch
{
}
}