日期:2014-05-17  浏览次数:20916 次

简单的C#位运算问题
C#初学者,求大神们帮帮忙,如下代码所示:
我从一个Color获取了一个ARGB向量,0xff87cefa,想通过位移将A分量分离出去(0x0087cefa),
然后加上自定义的A分量,但位移的时候出了问题,
<<8确实如预想那样变成0x87cefa00(后面0补位),可是>>8的时候居然又变成了0xff87cefa。。。。。
我不理解了,求大神们帮帮忙……
我只是想学习下位运算,请不要告诉我分别获取A,R,G,B,然后重组Color……谢谢……

//ARGB向量
            Int32 colorARGB = Configuration.buttonBackColor.ToArgb();
            //位移分离RGB
            Int32 RGB = (colorARGB << 8) >> 8;// / 256 / 256;
            //指定Alpha分量,合成新ARGB
            Int32 resultARGB = RGB + (Int32)(bgAlpha * Math.Pow(256, 3));
c# 位运算

------解决方案--------------------
1、用uint32
2、把自己alpha 加进去,只要把bgAlpha左移24位,然后直接和先前的值按位与就可以了
没必要想你那样。
------解决方案--------------------
可以用与预算啊。
0xff87cefa &00FFFFFF=0x0087cefa
------解决方案--------------------
int result = 0xff87cefa & 0x00ffffff