比较.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。请注意我的超快速的答案在这里。
3 回答
翻翻过去那场雪
TA贡献2065条经验 获得超14个赞
P / Invoke功能激活!
[DllImport("msvcrt.dll", CallingConvention=CallingConvention.Cdecl)]static extern int memcmp(byte[] b1, byte[] b2, long count);static bool ByteArrayCompare(byte[] b1, byte[] b2){ // Validate buffers are the same length. // This also ensures that the count does not exceed the length of either buffer. return b1.Length == b2.Length && memcmp(b1, b2, b1.Length) == 0;}
- 3 回答
- 0 关注
- 660 浏览
添加回答
举报
0/150
提交
取消