如何在 Java 中将 RGB 颜色转换为十六进制
How do i convert RGB color to hexadecimal in Java
我到处搜索,但找不到合适的解决方案。
我有一种 RGB 颜色,我想将其转换为这种格式:0xffffffff
许多答案将其转换为这种格式:#ffffff
有谁知道如何将其转换成这种格式 (0xffffffff
)?
编辑:已解决!我实际上需要一个 int,但我不小心说了 string,woopsie。似乎现在可以工作了,谢谢!
片段:
double frequency = .3;
double r = 255;
double g = 255;
double b = 255;
for (int i = 0; i < 32; ++i)
{
// I am trying to make a rainbow, hence this for loop and the Math.sin
r = Math.sin(frequency*i + 0) * 127 + 128;
g = Math.sin(frequency*i + 2) * 127 + 128;
b = Math.sin(frequency*i + 4) * 127 + 128;
int red = (int)r;
int green = (int)g;
int blue = (int)b;
// converting, outputs a string
System.out.println(result);
}
public static int colorToInt(int r, int g, int b) {
int result = 0;
result += r;
result = result << 8;
result += g;
result = result << 8;
result += b;
return result;
}
这是一个例子:
System.out.println(0xffffff); // 16777215
System.out.println(colorToInt(255, 255, 255)); // 16777215
回复:https://repl.it/repls/IrritatingTwinConsulting.
此函数接受 int 而不是 double,但我认为这不是问题。希望我正确理解了你的问题。
如果您希望数字不是 string
,而是 int
:
0xRRGGBB
RR
、GG
、BB
各代表一个介于 0 - 255 之间的值(RGB 值)。十六进制数的每个数字的值范围为 0 - 16,这意味着您将需要存储最多 16 ^ 6 = 16.777.216
的数字 -> 数据类型 int
应该没问题。
然后简单地让你的 int
:
int hexval = red * 65536 + green * 256 + blue;
您可以选择输出它:
System.out.printf("0x%06X\n", hexval);
我到处搜索,但找不到合适的解决方案。
我有一种 RGB 颜色,我想将其转换为这种格式:0xffffffff
许多答案将其转换为这种格式:#ffffff
有谁知道如何将其转换成这种格式 (0xffffffff
)?
编辑:已解决!我实际上需要一个 int,但我不小心说了 string,woopsie。似乎现在可以工作了,谢谢!
片段:
double frequency = .3;
double r = 255;
double g = 255;
double b = 255;
for (int i = 0; i < 32; ++i)
{
// I am trying to make a rainbow, hence this for loop and the Math.sin
r = Math.sin(frequency*i + 0) * 127 + 128;
g = Math.sin(frequency*i + 2) * 127 + 128;
b = Math.sin(frequency*i + 4) * 127 + 128;
int red = (int)r;
int green = (int)g;
int blue = (int)b;
// converting, outputs a string
System.out.println(result);
}
public static int colorToInt(int r, int g, int b) {
int result = 0;
result += r;
result = result << 8;
result += g;
result = result << 8;
result += b;
return result;
}
这是一个例子:
System.out.println(0xffffff); // 16777215
System.out.println(colorToInt(255, 255, 255)); // 16777215
回复:https://repl.it/repls/IrritatingTwinConsulting.
此函数接受 int 而不是 double,但我认为这不是问题。希望我正确理解了你的问题。
如果您希望数字不是 string
,而是 int
:
0xRRGGBB
RR
、GG
、BB
各代表一个介于 0 - 255 之间的值(RGB 值)。十六进制数的每个数字的值范围为 0 - 16,这意味着您将需要存储最多 16 ^ 6 = 16.777.216
的数字 -> 数据类型 int
应该没问题。
然后简单地让你的 int
:
int hexval = red * 65536 + green * 256 + blue;
您可以选择输出它:
System.out.printf("0x%06X\n", hexval);