我在一个字节数组中有自动滚动的位图数据,我想通过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#非法行为?