如何在 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

RRGGBB 各代表一个介于 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);