Java颜色将RGB编码为单个整数?

Java颜色将RGB编码为单个整数?,java,colors,bit-manipulation,rgb,Java,Colors,Bit Manipulation,Rgb,我正在阅读“Java完整参考第九版”,作者给出了一个例子,用一个整数创建一个颜色对象,对RGB值进行编码,他说: 整数在16到23位用红色组织,在16到23位用绿色组织 8到15,蓝色在0到7位。以下是此构造函数的一个示例: int newRed=(0xff000000 |)(0xc0我想你是想问为什么会在聚会上加入0xff000000。 它实际上依赖于实现。 我猜是两种选择之一: 1.颜色与这些位无关,为了安全起见,您将不相关的位设置为1(因此溢出红色与不溢出红色没有任何区别)。 2.这是al

我正在阅读“Java完整参考第九版”,作者给出了一个例子,用一个整数创建一个颜色对象,对RGB值进行编码,他说:

整数在16到23位用红色组织,在16到23位用绿色组织 8到15,蓝色在0到7位。以下是此构造函数的一个示例:


int newRed=(0xff000000 |)(0xc0我想你是想问为什么会在聚会上加入0xff000000。
它实际上依赖于实现。
我猜是两种选择之一:
1.颜色与这些位无关,为了安全起见,您将不相关的位设置为1(因此溢出红色与不溢出红色没有任何区别)。
2.这是alpha通道(这比前者更有意义)

编辑:

现在我意识到你在谈论awt颜色对象,所以正确的答案是选项2。

我想你的意思是问为什么要在聚会上添加0xff000000。
它实际上依赖于实现。
我猜是两种选择之一:
1.颜色与这些位无关,为了安全起见,您将不相关的位设置为1(因此溢出红色与不溢出红色没有任何区别)。
2.这是alpha通道(这比前者更有意义)

编辑:
现在我意识到您在谈论awt Color对象,因此正确的答案是选项2。

解释Java
Color
类包含alpha通道和RGB——因此以全零开始的颜色将是完全透明的。
0xff000000
表示的颜色是不透明的黑色

当然,在本例中,作者犯了一个错误。单参数构造函数忽略了高字节。相反,如果他想指定alpha(或者更简单地说,
新颜色(0xc0,0,0,0xff)
,它应该使用
新颜色(0xc0,0,0,0xff)


当然,在本例中,作者犯了一个错误。单参数构造函数忽略了高字节。相反,如果他想指定alpha(或者更简单地说,
新颜色(0xc0,0,0,0xff)
,它应该使用
新颜色(0xc0,0,0,0xff)
).

我总是好奇有什么问题……但我可能遗漏了什么:我总是好奇有什么问题……但我可能遗漏了什么:谢谢你的回答,很有帮助谢谢你的回答,很有帮助
int newRed = (0xff000000 | (0xc0 << 16) | (0x00 << 8) | 0x00);
Color darkRed = new Color(newRed);

0xff000000 in hexadecimal is equivalent to  0b11111111000000000000000000000000 in binary