移动整数以获得ARGB灰色

时间:2014-05-05 19:49:52

标签: java colors

让我说我有:

int x = 140;

我希望得到以下结果:

int y = new Color(x, x, x).getRGB()

来自Java API文档:

  

的getRGB()   
获取表示默认RGB ColorModel中颜色的RGB值。   
(位24-31是0xff,16-23是红色,8-15是绿色,0-7是蓝色)

但我不确定转移是如何起作用的,这是对的吗?

 int y = 0xff + x<<16 + x<<8 + x;

1 个答案:

答案 0 :(得分:1)

如果您忘记正确移动Alpha值,您的方法就会奏效。

int y = (0xff<<24) + (x<<16) + (x<<8) + x;

然而,常见的方法是直接移位位(左移和按位组合)。我认为,因为按位而不是加法比它更快,并且它足够可读来操纵人类的ARGB值。

int y = (0xff<<24) | (x<<16) | (x<<8) | x;

您可以这样查看。

(0xff << 24) =>  0xff000000
| (x<<16)    =>  0xff8c0000
| (x<<8)     =>  0xff8c8c00
| x          =>  0xff8c8c8c