让我说我有:
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;
答案 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