这篇文章原打算放在另一篇名为“如何比较两个字节数组”的文章的结尾,Vadym Stetsyak回答了该文章,但该文章已关闭。 我用他在那篇文章中的代码创建了这篇文章,并添加了上一篇文章中讨论的两项:
1.不同长度的数组
2.缓冲区必须被4整除。
我只是使用两个字节指针检查其余字节。
public unsafe static bool CompareByteArrays(byte[] b1, byte[] b2)
{
if (b1.Length != b2.Length)
return false;
fixed (byte* bp1 = b1)
{
fixed (byte* bp2 = b2)
{
int* ip1 = (int*) bp1;
int* ip2 = (int*) bp2;
for (int i = 0; i < b1.Length/4; i++)
{
if (ip2[i] != ip1[i])
return false;
}
if ((b1.Length % 4) != 0)
{
for (int i = b1.Length - (b1.Length % 4); i < b1.Length; i++)
{
if (bp2[i] != bp1[i])
return false;
}
}
return true;
}
}
}
和平,
罗伯
From: https://bytes.com/topic/c-sharp/insights/886686-how-compare-two-byte-arrays-length-not-divisible-4-a