我有一个十进制(非十六进制)颜色代码,使用Java,我需要将其转换为三种RGB颜色 .
例如,16777215(纯白色)需要转换为红色:255绿色:255蓝色:255 .
65280(纯绿色)需要转换为红色:0绿色255:蓝色:0
Here是更多示例的转换器 .
只是做一些小的计算并在上面链接的页面上玩计算器,我已经确定:
-
红色等于65536(256 ^ 2)
-
(255x65536 = 16711680,又名纯红色)
-
绿色等于256(256 ^ 1)
-
(255x256 = 65280,又名纯绿色)
-
蓝色等于1(256 ^ 0)
-
(255x1 = 255,又名纯蓝色)
我可以告诉它显然与字节有关,但我遗漏了最后一点 . 对于bits / bytes / etc的整个概念以及它如何与Java交互,我不是最好的,所以它可能相当简单 .
那么,有谁知道最好的方法呢?使用java将单个数字十进制颜色转换为三个单独的RGB值的最佳方法是什么?
5 回答
你可以做到
你说得对的地方:RGB值被编码为
int
中的字节 . R是字节2,G是字节1,B是字节0,总计为24位颜色深度 . 根据字节顺序,这可能是一种可能的表示 .您可以通过一些位移和屏蔽来提取RGB值:
您可以通过简单的按位操作来获取通道 .
从那里,应该很容易用颜色信息做任何你想做的事情 .
十进制,十六进制: does not matter . 您的计算机在内部使用二进制表示 .
你可能已经注意到
0xFF00 == 65280
.十进制和十六进制是用户表示 .
我知道我有点晚了,但......
这实际上与二进制移位完全相同,即使它不使用按位运算符 . 这也仅在使用有效RGB值时有效(意味着每个值都是0到255之间的整数) . 然而,为了提高效率,我将使用上述答案的二进制移位 .