[英]What does the >> operator do in C#?
我对C#很陌生并试图做一个基本的图像处理软件。 我理解这个片段从WriteableBitmap像素“当前”的ARGB int值中提取A,R,G,B
for(int i = 0; i < bitmapArray.Length; i++) {
var current = bitmapArray[i];
var alpha = (byte)(current >> 24);
var red = (byte)(current >> 16);
var green = (byte)(current >> 8);
var blue = (byte)(current);
//Some code
}
什么是“>>”来转换价值?
另外,如果我单独对r,g和b进行一些计算,如何将它们转换回整数ARGB值以用新的像素替换原始像素?
提前致谢。
编辑:谢谢你们,现在有道理。
它是二元移位运算符。
如果您有一个由(a,r,g,b)定义的颜色,它的二进制表示将如下所示(假设通道深度为8位):
AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
所以,将整个事物转移到24个地方,你就会留下alpha通道
AAAAAAAA
移动16,你得到alpha通道和红色通道
AAAAAAAARRRRRRRR
现在,由于它被转换为字节,因此只提取前8位
(byte)AAAAAAAARRRRRRRR == RRRRRRRR
您还可以通过移动16个位置获得红色通道,并使用11111111(0xFF)进行AND运算
AAAAAAAARRRRRRRR &
0000000011111111
----------------
00000000RRRRRRRR
它将current
值的位移到右侧。 在这个特定代码snippit的情况下,它似乎是从所选位图数组元素中将每个字节的颜色信息提取成单独的颜色字节。
http://msdn.microsoft.com/en-us/library/xt18et0d.aspx
假设你的数组包含int,要将计算值返回到数组元素中,你可以反转位移过程并将结果重新组合在一起,如下所示:
int current = (alpha << 24) | (red << 16) | (green << 8) | blue;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.