我读了“坚果 shell 中的C.Sharp 3.0”这本书,并遇到了下一段我感兴趣的代码。
unsafe void RedFilter(int[,] bitmap)
{
int length = bitmap.Length;
fixed (int* b = bitmap)
{
int* p = b;
for(int i = 0; i < length; i++)
*p++ &= 0xFF;
}
}
谁能解释我这个“* p++&= 0xFF”如何工作?
最佳答案
该功能大概是要拍摄位图图像,并滤除除红色以外的所有颜色。
假定它是一个32位位图,其中每个像素都由int
表示。
您要取消引用p
(这是一个int
)当前指向的内存位置,并将其与0xFF
进行“与”运算,这实际上只留下了像素的红色部分(假设最低字节是红色部分)。您还将自动将指针增加到下一个int
(带有++
)。这有答案吗?