本文介绍了如何调用memcmp()的字节两部分组成[](带偏移)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想比较 byte []的部分高效 - 让我明白了 memcmp()应使用。

我知道我可以使用的PInvoke调用 memcmp() - 的

不过,我想比较字节[] 只有部分 - 使用偏移,并没有 memcmp()与偏移,因为它使用指针。

  INT CompareBuffers(byte []的缓冲器1,INT偏移1,byte []的缓冲器2,INT偏移2,诠释计数)
{
  //不知怎的,调用memcmp(放大器;缓冲器1 +偏移,与放大器;缓冲器2 +偏移2,计数)
}
 

我应该使用C ++ / CLI来做到这一点?

我应该使用的PInvoke使用的IntPtr?怎么样?

感谢你。

解决方案

C ++ / CLI肯定是干净的,但实在很难证明,如果你是不是已经在使用它加入C ++ / CLI到您的项目。

如何Marshal.UnsafeAddrOfPinnedArrayElement(array,偏移量)?

I want to compare parts of byte[] efficiently - so I understand memcmp() should be used.

I know I can using PInvoke to call memcmp() - Comparing two byte arrays in .NET

But, I want to compare only parts of the byte[] - using offset, and there is no memcmp() with offset since it uses pointers.

int CompareBuffers(byte[] buffer1, int offset1, byte[] buffer2, int offset2, int count)
{
  // Somehow call memcmp(&buffer1+offset1, &buffer2+offset2, count)
}

Should I use C++/CLI to do that?

Should I use PInvoke with IntPtr? How?

Thank you.

解决方案

C++/CLI will definitely be the cleanest, but this hardly justifies adding C++/CLI to your project if you aren't already using it.

How about Marshal.UnsafeAddrOfPinnedArrayElement(array, offset)?

这篇关于如何调用memcmp()的字节两部分组成[](带偏移)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-24 03:19