我有一个从android。graphics。color生成的整数

Integer的值为-16776961

如何将此值转换为格式为#RRGGBB的十六进制字符串

简单地说:我想从-16776961输出#0000FF

注意:我不希望输出包含alpha,我也尝试了这个例子没有任何成功


当前回答

你可以使用这个没有alpha的颜色:

String hexColor = String.format("#%06X", (0xFFFFFF & intColor));

或者这个是

String hexColor = String.format("#%08X", (0xFFFFFFFF & intColor));

其他回答

这是我所做的

 int color=//your color
 Integer.toHexString(color).toUpperCase();//upercase with alpha
 Integer.toHexString(color).toUpperCase().substring(2);// uppercase without alpha

谢谢你们的回答

你可以使用这个没有alpha的颜色:

String hexColor = String.format("#%06X", (0xFFFFFF & intColor));

或者这个是

String hexColor = String.format("#%08X", (0xFFFFFFFF & intColor));

使用这个方法Integer。toHexString,当使用color . parseccolor时,你可以对某些颜色有一个Unknown color异常。

使用这个方法String。format("#%06X", (0xFFFFFF & intColor)),你将失去alpha值。

所以我推荐这个方法:

public static String ColorToHex(int color) {
        int alpha = android.graphics.Color.alpha(color);
        int blue = android.graphics.Color.blue(color);
        int green = android.graphics.Color.green(color);
        int red = android.graphics.Color.red(color);

        String alphaHex = To00Hex(alpha);
        String blueHex = To00Hex(blue);
        String greenHex = To00Hex(green);
        String redHex = To00Hex(red);

        // hexBinary value: aabbggrr
        StringBuilder str = new StringBuilder("#");
        str.append(alphaHex);
        str.append(blueHex);
        str.append(greenHex);
        str.append(redHex );

        return str.toString();
    }

    private static String To00Hex(int value) {
        String hex = "00".concat(Integer.toHexString(value));
        return hex.substring(hex.length()-2, hex.length());
    }

蒙版确保你只得到RRGGBB, %06X给你零填充十六进制(总是6个字符长):

String hexColor = String.format("#%06X", (0xFFFFFF & intColor));

我相信我已经找到了答案,这段代码将整数转换为十六进制字符串并删除alpha。

Integer intColor = -16895234;
String hexColor = "#" + Integer.toHexString(intColor).substring(2);

请注意,只有在确定删除alpha不会影响任何事情的情况下才使用此代码。