为了账号安全,请及时绑定邮箱和手机立即绑定

如何将数组中的 rgba 转换为 Hex?

如何将数组中的 rgba 转换为 Hex?

潇湘沐 2024-01-05 16:27:52
附加快照[快照] 我将检索 7 天之一的背景颜色并转换为十六进制。一天中的时间会在午夜自动选择,并以紫色突出显示。我将从 7 天列表中选择突出显示的时间。我运行了一个数组,并在 7 天之一中得到了这个结果 - “ rgb(92, 50, 150) none Repeat scroll 0% 0% / auto padding-box border-box ” 但我的转换没有运行并抛出此错误 -无枚举常量 org.openqa.selenium.support.Colors.RGBA(0, 0, 0, 0) NONE REPEAT SCROLL 0% 0% / AUTO PADDING-BOX BORDER-BOX周日:关闭周一:中午 12:00 - 晚上 8:00周二:下午 1:00 - 下午 6:00周三:上午 10:00 - 下午 6:00 周四:中午 12:00 - 晚上 8:00周五:10 :00 am - 6:00 pm周六:10:00 am - 5:00 pm  WebElement saturday =driver.findElement(By.xpath("//*[@id='hours']/div/div/div/div[7]"));    String saturdayHrs= saturday.getCssValue("background");    String selectSaturday = Color.fromString(saturdayHrs).asHex();    String [] selectDate = {selectSunday, selectMonday, selectTuesday, selectWednesday, selectThursday, selectFriday, selectSaturday};    for (String dtColor:selectDate) {        System.out.println(dtColor);    }}
查看完整描述

3 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

有很多方法可以实现这一点:

第一个解决方案:


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;

}

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


查看完整回答
反对 回复 2024-01-05
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

使用该类java.awt.Color,您可以获取 RGB 值。

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


查看完整回答
反对 回复 2024-01-05
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

使用一些按位运算符快速完成它。这也可用于有效地打包 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;

}


查看完整回答
反对 回复 2024-01-05
  • 3 回答
  • 0 关注
  • 167 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信