我正在使用Java / Android,我想采用0xFFFFFFFF
int颜色并将其分为4个字节,分别用于红色,绿色,蓝色和alpha。我知道Color
有提取特定颜色值的方法,但它会将它们作为int
。我已经浏览了SDK,发现Color.red(color)
方法与说(color >> 16) & 0xFF
相同,老实说我不知道这意味着什么,但我想我可以用某种方式来使用它。
我已经尝试过了
byte red = (byte)Color.red(color);
但这似乎不起作用。重点是,我可以使用方法
将值输入OpenGLglColorPointer(4, GL_UNSIGNED_BYTE, 4, myColors);
myColors是一个byte []。
非常感谢任何帮助/提示/积分。
答案 0 :(得分:1)
如果Color有提取特定颜色值的方法,则将Red提取为int,然后将其设为Hex,然后设置为Green,然后设置为Blue。您可能还想提取alpha。使用Integer.toHexString(int)
,您可以打印int的十六进制值。
(color >> 16) & 0xFF
将红色(通过位移和添加)定位到非alpha颜色的6个十六进制数中的前两个。非alpha颜色RBG由3个字节的信息组成。每个字节都是一个颜色,顺序为R(红色)B(蓝色)G(绿色)。 0xFF是一个字节,如果设置为红色意味着颜色有全红等等