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

java中如何从十六进制颜色代码中获取RGB值,java,android,colors,Java,Android,Colors,我有一个十进制颜色代码(例如:4898901)。我将其转换为十六进制,相当于4ac055。如何从十六进制颜色代码中获取红色、绿色和蓝色分量值?假设这是一个字符串: // edited to support big numbers bigger than 0x80000000 int color = (int)Long.parseLong(myColorString, 16); int r = (color >> 16) & 0xFF; int g = (color >&

我有一个十进制颜色代码(例如:
4898901
)。我将其转换为十六进制,相当于
4ac055
。如何从十六进制颜色代码中获取红色、绿色和蓝色分量值?

假设这是一个字符串:

// 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;

当您有
十六进制代码时:4ac055
。前两个字母是红色。接下来的两个字母是绿色,最近的两个字母是蓝色。所以当你有红色的十六进制代码时,你必须把它转换成dez。在这些示例中,
红色4a=74
<代码>绿色c0=192和
蓝色=85

尝试创建一个函数来拆分
hexcode
,然后返回
rgb
code

试试这个

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 ) );
}

对于使用Color类,您必须使用的Color类来自
java.awt.Color

我不确定您的确切需求。不过也有一些建议

使用以下方法:

Integer.toHexString(yourNumber);
要获取RGB,可以使用类颜色:

Color color = new Color(4898901);
float r = color.getRed();
float g = color.getGreen();
float b = color.getBlue();

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

Color color =  Color.decode("0xFF0000");
int red = color.getRed();
int blue = color.getBlue();
int green = color.getGreen();
如果您有一个号码,请按以下方式进行:

Color color = new Color(0xFF0000);
当然,要得到你所需要的颜色:

float red = color.getRed();
float green = color.getGreen();
float blue = color.getBlue();

你需要从字符串中得到3 int?还是一个字符串中的3个字符串?我想从我的十六进制颜色代码中得到3个整数值,即红色、绿色和蓝色。我在我的应用程序中使用了这些代码,在android 2.3上运行时,我得到myColorString的解释:“无法将'4282291905'解析为整数”。你能告诉我为什么吗?@ProSoft-上面的代码不适合你,因为数字4282291905溢出了整数边界。你可以改为使用Long(我会修正答案)我在
Android
-
Android.graphics.Color
中找不到这个类。我已经有一段时间没有使用这个代码了。我相信这是使用标准的Java颜色类。很好,治好了我的头痛+1
String hex1 = "#FF00FF00";    //BLUE with Alpha value = #AARRGGBB

int a = Integer.valueOf( hex1.substring( 1, 3 ), 16 );
int r = Integer.valueOf( hex1.substring( 3, 5 ), 16 );
int g = Integer.valueOf( hex1.substring( 5, 7 ), 16 );
int b = Integer.parseInt( hex1.substring( 7, 9 ), 16 );

Toast.makeText(getApplicationContext(), "ARGB: " + a + " , " + r + " ,  "+ g + " , "+ b , Toast.LENGTH_SHORT).show();

String hex1 = "#FF0000";    //RED with NO Alpha = #RRGGBB

int r = Integer.valueOf( hex1.substring( 1, 3 ), 16 );
int g = Integer.valueOf( hex1.substring( 3, 5 ), 16 );
int b = Integer.parseInt( hex1.substring( 5, 7 ), 16 );

Toast.makeText(getApplicationContext(), "RGB: " + r + " ,  "+ g + " , "+ b , Toast.LENGTH_SHORT).show();
int color = Color.parseColor("#519c3f");

int red = Color.red(color);
int green = Color.green(color);
int blue = Color.blue(color);