من الممكن الحصول على مجموعة INTPTR من مجموعة INT []؟

StackOverflow https://stackoverflow.com/questions/2238049

سؤال

تحيات.

في C #: إذا كان لدي مجموعة int [] أعلن مثل هذا

int[] array = new array[size];

هناك طريقة للحصول على INTPTR من هذه الصفيف؟

الشيء هو أن أستخدم إطار EMGUCV، وهناك منشئ لإنشاء صورة تأخذ IntPTR إلى بيانات البكسل، من أجل إنشاء صورة من صفيف (INT []).

Image<Gray,Int32> result = new Image<Gray,int>(bitmap.Width,bitmap.Height,stride,"**array.toPointer??**");

بالمناسبة إذا كان شخص ما قد أخبرني كيف لحساب الخطوة، سيكون ذلك رائعا.

هل كانت مفيدة؟

المحلول

يجب أن تكون قادرا على القيام بذلك دون رمز غير آمن باستخدام GCHandle. وبعد هنا عينة:

GCHandle handle = GCHandle.Alloc(array, GCHandleType.Pinned);
try
{
    IntPtr pointer = handle.AddrOfPinnedObject();
}
finally
{
    if (handle.IsAllocated)
    {
        handle.Free();
    }
}

نصائح أخرى

استخدم رمز غير آمن، مثل هذا:

unsafe
{
  fixed (int* pArray = array)
  {
    IntPtr intPtr = new IntPtr((void *) pArray);
  }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top