java - 将青色的整数颜色转换为 RGB 时遇到问题

标签 java colors rgb modulo modulus

有一个简单的算法可以将整数值转换为 0-255 之间三个数字的 RGB 值 integer to rgb 。我从 Android Colors 得到整数。我什至跑了:

System.out.println(Color.decode("-16711681"));

答案是 java.awt.Color[r=0,g=255,b=0],这是预期的。

我在第一步确实遇到了问题,-16711681 % 256 是 255,我预计红色为 0。在 Java 中我编码:

System.out.println(-16711681 % 256);

我得到 -1,这意味着我必须添加 256,而我的红色是 255。有人可以帮助我吗?

最佳答案

那是因为您的数字不是像您的 gamedev 链接所建议的那样是 ABGR 包装的整数,而是 ARGB 包装的整数。

Color.decode(int) 想要以下格式的颜色:

0xAARRGGBB

其中 AA 是透明度,RR 是红色,GG 是绿色,BB 是蓝色。当您执行 color % 256 时,将返回颜色的蓝色 (BB) 部分。

如果我们使用Integer.toHexString(-16711681)查看颜色,我们会得到:

 Color:   ff00ffff
(Format:  AARRGGBB)

相当于Color[r=0,g=255,b=255]

如果要读取红色值,需要先将其移过来:

(color >> 16) & 0xFF

关于java - 将青色的整数颜色转换为 RGB 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25556165/

相关文章:

java - 实现 LRU 缓存的最佳方法

javascript - 如何使用HSL到RGB转换功能

colors - 如何从两个 RGB 值中找到一种颜色的 RGBA 值?

java - 正在使用哪个cacert?

java - : the use of getContentPane() from JFrame Class & getContentPane() from JRootPane? 和有什么区别

Java Bean - 通过原型(prototype)范围需要相同的对象

javascript - 选择远离白色的颜色

Javascript单独循环多个div的背景颜色

colors - 如何以编程方式选择良好对比度的RGB颜色?

python - 如何从一张图像的 Y channel 和另一张图像的 U、V channel 创建新图像?