Как преобразовать целое число цвета в шестнадцатеричную строку в Android?

У меня есть целое число, которое было создано из android.graphics.Color

Целое число имеет значение -16776961

Как преобразовать это значение в шестнадцатеричную строку с форматом #RRGGBB

Проще говоря: я хотел бы выводить # 0000FF из -16776961

Примечание: Я не хочу, чтобы на выходе содержалась альфа, и я также без проблем пытался этот пример

Ответ 1

Маска гарантирует, что вы получите только RRGGBB, а% 06X дает нулевое шестнадцатеричное (всегда 6 символов):

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

Ответ 3

Я верю, что нашел ответ. Этот код преобразует целое число в шестнадцатеричную строку, удаляет альфу.

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

Примечание используйте этот код только в том случае, если вы уверены, что удаление альфы не повлияет ни на что.

Ответ 4

Вот что я сделал

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

Спасибо, ребята, вы ответили.

Ответ 5

С помощью этого метода Integer.toHexString вы можете иметь исключение Неизвестного цвета для некоторых цветов при использовании Color.parseColor.

И с помощью этого метода String.format( "#% 06X", (0xFFFFFF и intColor)), вы потеряете значение альфа.

Поэтому я рекомендую этот метод:

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

Ответ 6

String int2string = Integer.toHexString(INTEGERColor); //to ARGB
String HtmlColor = "#"+ int2string.substring(int2string.length() - 6, int2string.length()); // a stupid way to append your color