2
我想比較使用指針的2字節數組。 我將字節數組視爲int指針來更快地運行(比較4個字節)。c#比較字節數組
public static bool DoBuffersEqual(byte[] first, byte[] second)
{
unsafe
{
fixed (byte* pfirst = first, psecond = second)
{
int* intfirst = (int*)pfirst;
int* intsecond = (int*)psecond;
for (int i = 0; i < first.Length/4; i++)
{
if ((intfirst + i) != (intsecond + i))
return false;
}
}
}
return true;
}
private void Form1_Load(object sender, EventArgs e)
{
byte[] arr1 = new byte[4000];
byte[] arr2 = new byte[4000];
for (int i = 0; i < arr1.Length; i++)
{
arr1[i] = 100;
arr2[i] = 100;
}
bool res = DoBuffersEqual(arr1, arr2);
Console.WriteLine(res);
}
出於某種原因,調用此函數後我得到假結果...
沒有任何人有任何的想法有什麼不對嗎?
在此先感謝!
[爲兩個字節數組檢查平等(http://stackoverflow.com/questions/18472867/checking-equality-for-two-byte-arrays) – Smartis
你比較指針的可能的複製,不是指向值。所以:'if(*(intfirst + i)!= *(intsecond + i))' – spender
你不要取消引用你的指針,所以你比較的指針不是它們指向的值。 – Evk