有两个byte数组,a={0x00,0x21},b={0x00,0x21}
有什么简单方法比较这两个数组是否相等吗?
最好是.net类库中的方法。

解决方案 »

  1.   

    如果是比较两个数组的引用是否相同,很简单。
    如果是其元素,则没有现成的方法bool IsEquals(byte[]a,byte[]b)
    {
       if(a.Length!=b.Length)
             return false;
       //如果不要求元素的顺序一致的话,先调用Array.Sort(a);Array.Sort(b);
       for(int i=0;i<a.Length;i++)
         if(a[i]!=b[i])
            return false;
       return true;
    }
      

  2.   

    循环比较
    public static int MemoryCompare2(byte[] b1, byte[] b2)
        {
            int result = 0;
            if (b1.Length != b2.Length)
                result = b1.Length - b2.Length;
            else
            {
                for (int i = 0; i < b1.Length; i++)
                {
                    if (b1[i] != b2[i])
                    {
                        result = (int)(b1[i] - b2[i]);
                        break;
                    }
                }
            }
            return result;
        }

     [DllImport("msvcrt.dll")]
        private static extern IntPtr memcmp(byte[] b1, byte[] b2, IntPtr count);
    public static int MemoryCompare(byte[] b1, byte[] b2)
        {
            IntPtr retval = memcmp(b1, b2, new IntPtr(b1.Length));
            return retval.ToInt32();
        }