如何从java中的十六进制颜色代码中获取RGB值

and*_*Guy 17 java android colors

我有一个十进制颜色代码(例如:) 4898901.我正在将其转换为十六进制等效的4ac055.如何从十六进制颜色代码中获取红色,绿色和蓝色组件值?

MBy*_*ByD 66

假设这是一个字符串:

// edited to support big numbers bigger than 0x80000000
int color = (int)Long.parseLong(myColorString, 16);
int r = (color >> 16) & 0xFF;
int g = (color >> 8) & 0xFF;
int b = (color >> 0) & 0xFF;
Run Code Online (Sandbox Code Playgroud)


Lal*_*ani 7

试试这个,

colorStr e.g. "#FFFFFF"

public static Color hex2Rgb(String colorStr) {
    return new Color(
            Integer.valueOf( colorStr.substring( 1, 3 ), 16 ),
            Integer.valueOf( colorStr.substring( 3, 5 ), 16 ),
            Integer.valueOf( colorStr.substring( 5, 7 ), 16 ) );
}
Run Code Online (Sandbox Code Playgroud)

对于使用Color类,您必须使用java-rt-jar-stubs-1.5.0.jar作为Color类来自java.awt.Color


Dan*_*yan 7

如果你有一个字符串,这种方式更好:

Color color =  Color.decode("0xFF0000");
int red = color.getRed();
int blue = color.getBlue();
int green = color.getGreen();
Run Code Online (Sandbox Code Playgroud)

如果您有一个号码,那么这样做:

Color color = new Color(0xFF0000);
Run Code Online (Sandbox Code Playgroud)

然后当然要获得你刚刚做的颜色:

float red = color.getRed();
float green = color.getGreen();
float blue = color.getBlue();
Run Code Online (Sandbox Code Playgroud)

  • 我在'Android`中找不到这个类 - "android.graphics.Color"没有这样的方法. (2认同)

Fra*_*uga 5

我不确定你的确切需要.不过有些提示.

整数类可以使用以下方法将十进制数转换为十六进制数:

Integer.toHexString(yourNumber);
Run Code Online (Sandbox Code Playgroud)

要获得RGB,您可以使用类Color:

Color color = new Color(4898901);
float r = color.getRed();
float g = color.getGreen();
float b = color.getBlue();
Run Code Online (Sandbox Code Playgroud)