尝试从图像中获取像素值时发现了一段代码,但我不太了解,
red = (rgb & 0x00ff0000) >> 16;
我知道如果存在红色,它将在值上加1,并且我认为
0x00ff0000
位是红色的十六进制值,并且>>
向右移动16位。有什么解释?
最佳答案
这是从一个数字(假设一个代表)表示aRGB中的一种颜色中提取红色分量。
第一的:
(rgb & 0x00ff0000)
...按位使用,并将
rgb
的所有所有位清零,只有包含红色成分的字节(第三高有效字节)中的位除外。然后,将该值右移16个位置(使用>> 16
),使其占据最右边的字节,然后将其值分配给red
。例如,假设您有一个表示vivid cyan的
int
:int color = 0x0012faff;
然后,这:
int redOnly = color & 0x00ff0000;
System.out.println(redOnly >> 16);
打印:
18
...这是十六进制
0x12
的十进制值(从上面color
中的红色位置开始)。同样,您可以使用以下方法获取绿色和蓝色组件的值:
int green = (color & 0x0000ff00) >> 8; // 250 = 0xfa
int blue = (color & 0x000000ff); // 255 = 0xff
关于java - 理解这段代码(从整数中提取颜色分量),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8640042/