C#将指向X的指针转换为指向Y的指针

时间:2018-03-28 10:56:07

标签: c# pointers unsafe-pointers

我在一个字节数组中有自动滚动的位图数据,我想通过System.Drawing Bitmap显示它。为此我需要引入一个步幅(由一个位图线占用的存储器),它是4的倍数。这使我得到了以下功能:

private unsafe int[] expandStride(byte* bitmap, uint height, uint oldStride)
{
    uint newStride = ((oldStride+3) / 4) * 4;
    int[] r = new int[newStride/4 * height];

    fixed (int* p = r)
    {
        byte* dest = (byte*)p;

        // do something with dest
        dest[j] = bitmap[i];
    }
    return r;
}

我尝试返回一个4对齐的数组(因此int [])。带有`

的构造
fixed (int* p = r)
{
    byte* dest = (byte*)p;`

看起来很笨,但同样不安全fixed (byte* dest = (byte*)r)  不是合法的C#。是否有一种更清晰的方式来获取byte*指针,或者我是否深入了解C#非法行为?

0 个答案:

没有答案