Java 如何将rgba从数组转换为十六进制?

Java 如何将rgba从数组转换为十六进制?,java,selenium-webdriver,Java,Selenium Webdriver,[快照]我将检索七天中某一天的背景色并转换为十六进制。白天的时间在午夜自动选择,并以紫色突出显示。我将从七天列表中选择突出显示的小时数。我运行了一个数组,在七天中的一天得到了这个结果——“rgb(92,50,150)无重复滚动0%0%/自动填充框边框框” 但我的转换没有运行并抛出此错误- 无枚举常量org.openqa.selenium.support.Colors.RGBA(0,0,0,0)无重复滚动0%0%/自动填充框边框框 星期日: 关闭 星期一: 下午12:00 - 晚上八点 星期

[快照]我将检索七天中某一天的背景色并转换为十六进制。白天的时间在午夜自动选择,并以紫色突出显示。我将从七天列表中选择突出显示的小时数。我运行了一个数组,在七天中的一天得到了这个结果——“rgb(92,50,150)无重复滚动0%0%/自动填充框边框框” 但我的转换没有运行并抛出此错误- 无枚举常量org.openqa.selenium.support.Colors.RGBA(0,0,0,0)无重复滚动0%0%/自动填充框边框框

星期日: 关闭
星期一: 下午12:00 - 晚上八点
星期二: 下午1:00 - 下午六点
星期三: 上午10:00 - 下午六点
星期四: 下午12:00 - 晚上八点
星期五: 上午10:00 - 下午六点
星期六: 上午10:00 - 下午五点
@测试(优先级=3,description=“验证日期和时间”) public void today()抛出InterruptedException{ WebElement sunday=driver.findElement(By.xpath(“/[@id='hours']]/div/div/div/div”); 字符串sundayHrs=sunday.getCssValue(“背景”); String selectSunday=Color.fromString(sundayHrs.asHex(); WebElement monday=driver.findElement(By.xpath(“/[@id='hours']]/div/div/div/div/div[2]”); 字符串mondayHrs=monday.getCssValue(“背景”); String selectMonday=Color.fromString(mondayHrs.asHex(); WebElement tuday=driver.findElement(By.xpath(“/[@id='hours']]/div/div/div/div/div[3]”); 字符串tuesdayHrs=tuday.getCssValue(“背景”); String selectTuesday=Color.fromString(tuesdayHrs.asHex(); WebElement周三=driver.findElement(By.xpath(“/[@id='hours']]/div/div/div/div[4]”); 字符串wednesdayHrs=周三.getCssValue(“背景”); String select星期三=Color.fromString(星期三).asHex(); WebElement星期四=driver.findElement(By.xpath(“/[@id='hours']]/div/div/div/div[5]”); 字符串thursdayHrs=thurday.getCssValue(“背景”); String selectThresday=Color.fromString(thursdayHrs.asHex(); WebElement friday=driver.findElement(By.xpath(“/[@id='hours']]/div/div/div/div/div[6]”); 字符串fridayHrs=friday.getCssValue(“背景”); String selectFriday=Color.fromString(fridayHrs.asHex()


有很多方法可以实现这一点:
第一个解决方案:

String hex = String.format("#%02x%02x%02x%02x", a, r, g, b);
public int toHex(Color color) {
    String alpha = addPadding(Integer.toHexString(color.getAlpha()));
    String red = addPadding(Integer.toHexString(color.getRed()));
    String green = addPadding(Integer.toHexString(color.getGreen()));
    String blue = addPadding(Integer.toHexString(color.getBlue()));
    String hex = "0x" + alpha + red + green + blue;
    return Integer.parseInt(hex, 16);
}

private static final String addPadding(String s) {
    return (s.length() == 1) ? "0" + s : s;
}
第二种解决方案:

String hex = String.format("#%02x%02x%02x%02x", a, r, g, b);
public int toHex(Color color) {
    String alpha = addPadding(Integer.toHexString(color.getAlpha()));
    String red = addPadding(Integer.toHexString(color.getRed()));
    String green = addPadding(Integer.toHexString(color.getGreen()));
    String blue = addPadding(Integer.toHexString(color.getBlue()));
    String hex = "0x" + alpha + red + green + blue;
    return Integer.parseInt(hex, 16);
}

private static final String addPadding(String s) {
    return (s.length() == 1) ? "0" + s : s;
}

第一个解决方案返回十六进制字符串,第二个解决方案返回整数表示的十六进制。

使用一些位运算符快速完成。这也可以用于有效地打包32位颜色

String rgba2hex(int red, int green, int blue, int alpha) {
    return String.format("0x%08X", rgba(red, green, blue, alpha));
}

int rgba(int red, int green, int blue, int alpha) {
    int rgba = 0;
    rgba |= (alpha & 0xff) << 24;
    rgba |= (red & 0xff) << 16;
    rgba |= (green & 0xff) << 8;
    rgba |= (blue & 0xff);
    return rgba;
}

// reverse it
int[] rgba(int rgba) {
    int[] color = new int[4];
    color[4] = (rgba >> 24) & 0xff; // alpha
    color[1] = (rgba >> 16) & 0xff; // red
    color[2] = (rgba >> 8) & 0xff; // green
    color[3] = rgba & 0xff; // blue
    return color;
}
字符串rgba2hex(整数红色、整数绿色、整数蓝色、整数alpha){
返回String.format(“0x%08X”,rgba(红色、绿色、蓝色、alpha));
}
整数rgba(整数红色、整数绿色、整数蓝色、整数alpha){
int-rgba=0;
rgba |=(alpha&0xff)>16)&0xff;//红色
颜色[2]=(rgba>>8)&0xff;//绿色
颜色[3]=rgba&0xff;//蓝色
返回颜色;
}

使用
java.awt.Color
类,您可以获取rgb值

String color2hex(Color color) {
    return String.format("#%08X", color.getRGB());
}

您正在尝试将rgba转换为十六进制,对吗?是的,我想转换,但从七天开始,我将选择一个rowI发布的解决方案,如果这不是您想要的,请尝试编辑您的问题,以便我能够理解您正在尝试做的更多工作。通过一些代码示例,例如:希望如此,提出问题的用户不仅会重新研究h回答他们自己的问题,但也分享研究、代码尝试和结果。这表明你花了时间尝试帮助自己,这避免了我们重复显而易见的答案,最重要的是,它帮助你获得更具体和相关的答案!另请参阅:发布相关HTML。我怀疑你甚至需要转换RGB在所有…只要寻找正确的类,等等,你可以在一个定位器。