byte[] result ={ 32, 32, 45, 5, 87, 98 };
result.Equals(Encoding.UTF8.GetBytes(Encoding.UTF8.GetString(result)));
为什么返回的是一个false?
如果想返回true怎么写?
byte数组有可能包含中文的。

解决方案 »

  1.   

    在byte[]的对象result上调用result.Equals(...)来判断其内容与另一个byte[]中的内容是否相等是不对的,对于引用类型,相等定义为对象相等,即这些引用是否引用同一对象,Encoding.UTF8.GetBytes(Encoding.UTF8.GetString(result)) 会返回一个新的byte[]对象 两者不是同一引用所以返回false,你可以自己实现一个方法来比较两个数组的内容是否相等
      

  2.   

    byte[] result ={ 32, 32, 45, 5, 87, 98 };
    byte[] array = Encoding.UTF8.GetBytes(Encoding.UTF8.GetString(result));这两个字节数组的值都是{32, 32, 45, 5, 87, 98}但是不能用Equals来判断两个数组是否相同..
      

  3.   

    如果要比较两个数组里的所有值是否都相等,可以自己写个函数:写个例子: static void Main(string[] args)
            {
                byte[] result ={ 32, 32, 45, 5, 87, 98 };
                byte[] array = Encoding.UTF8.GetBytes(Encoding.UTF8.GetString(result));
                bool b = ByteEquals(result, array);
                Console.WriteLine(b.ToString());
            }        static bool ByteEquals(byte[] b1, byte[] b2)
            {        
                if (b1 == null || b2 == null) return false;
                if (b1.Length != b2.Length) return false;
                for (int i = 0; i < b1.Length; i++)
                    if (b1[i] != b2[i])
                        return false;
                return true;
            }   输出:
    True