Лучший путь от байта [] к байту * - PullRequest
0 голосов
/ 24 мая 2011

Есть ли лучший способ? Обратите внимание, что я не использую fixed, потому что мне нужно сканировать данные буфера.

GCHandle pinned1 = GCHandle.Alloc(Pic1, GCHandleType.Pinned);
IntPtr ptr1 = pinned1.AddrOfPinnedObject();
byte* p1 = (byte*)ptr1.ToPointer();
//...
//...
//...
byte a=*p1;
p1++;
//...
//...
pinned1.Free();

1 Ответ

7 голосов
/ 24 мая 2011

Да, есть лучший способ: используйте fixed.

Вы можете просто присвоить указатель другой переменной и выполнить арифметику указателя на этом:

fixed (byte* ptr = pic1)
{
    byte* p1 = ptr;

    //...
    byte a = *p1;
    p1++;
    //...
}
...