猿问

比较.NET中的两个字节数组

比较.NET中的两个字节数组

我怎么能快速做到这一点?

当然,我可以这样做:

static bool ByteArrayCompare(byte[] a1, byte[] a2){
    if (a1.Length != a2.Length)
        return false;

    for (int i=0; i<a1.Length; i++)
        if (a1[i]!=a2[i])
            return false;

    return true;}

但我正在寻找BCL功能或一些经过高度优化的可靠方法来实现这一目标。

java.util.Arrays.equals((sbyte[])(Array)a1, (sbyte[])(Array)a2);

很好地工作,但它看起来不适用于x64。

请注意我的超快速的答案在这里


慕婉清6462132
浏览 661回答 3
3回答

翻翻过去那场雪

P / Invoke功能激活![DllImport("msvcrt.dll",&nbsp;CallingConvention=CallingConvention.Cdecl)]static&nbsp;extern&nbsp;int&nbsp;memcmp(byte[]&nbsp;b1,&nbsp;byte[]&nbsp;b2,&nbsp;long&nbsp;count);static&nbsp;bool&nbsp;ByteArrayCompare(byte[]&nbsp;b1,&nbsp;byte[]&nbsp;b2){ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Validate&nbsp;buffers&nbsp;are&nbsp;the&nbsp;same&nbsp;length. &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;This&nbsp;also&nbsp;ensures&nbsp;that&nbsp;the&nbsp;count&nbsp;does&nbsp;not&nbsp;exceed&nbsp;the&nbsp;length&nbsp;of&nbsp;either&nbsp;buffer.&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;b1.Length&nbsp;==&nbsp;b2.Length&nbsp;&&&nbsp;memcmp(b1,&nbsp;b2,&nbsp;b1.Length)&nbsp;==&nbsp;0;}
随时随地看视频慕课网APP
我要回答