从byte []到byte *的更好方法

时间:2011-05-24 18:53:17

标签: c# .net optimization unsafe

有更好的方法吗?请注意,我没有使用fixed,因为我需要扫描缓冲区数据。

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

1 个答案:

答案 0 :(得分:7)

是的,有更好的方法:使用fixed

您可以简单地将指针指定给另一个变量并对其执行指针运算:

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

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