Comment convertir un entier de couleur en chaîne de hexadécimal sous Android?

j'ai un entier qui a été généré à partir d'un android.graphics.Color

L'entier a une valeur de -16776961

comment convertir cette valeur en chaîne hexadécimale avec le format # RRGGBB

simplement dit: je voudrais sortir #0000FF de -16776961

Note: Je ne veux pas que la sortie contienne un alpha et j'ai également essayé cet exemple sans tout succès

162
demandé sur Community 2011-06-30 23:12:24

7 réponses

le masque fait en sorte que vous obtenez seulement RRGGBB, et le %06X vous donne zéro-rembourré hexagone (toujours 6 caractères de long):

String hexColor = String.format("#%06X", (0xFFFFFF & intColor));
388
répondu Josh 2011-06-30 19:56:32

je crois avoir trouvé la réponse, ce code convertit l'entier en chaîne hexadécimale an supprime l'alpha.

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

Note n'utilisez ce code que si vous êtes sûr que la suppression du caractère alpha n'affecterait rien.

18
répondu Bosah Chude 2011-07-01 06:39:38

voici ce que j'ai fait

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

Merci les gars vous avez des réponses, la chose n'a

7
répondu Diljeet 2012-12-17 17:53:36

avec cette méthode entier.toHexString , vous pouvez avoir une exception de couleur inconnue pour certaines couleurs en utilisant la couleur.parseColor.

et avec cette méthode chaîne.format ("#%06X", (0xFFFFFF & intColor)) , vous perdrez la valeur alpha.

donc je recommande cette méthode:

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());
    }
2
répondu Simon 2017-09-30 00:35:04

valeur entière de l'ARGB de la couleur à chaîne hexadécimale:

String hex = Integer.toHexString(color); // example for green color FF00FF00

chaîne hexadécimale à valeur entière de couleur ARGB:

int color = (Integer.parseInt( hex.substring( 0,2 ), 16) << 24) + Integer.parseInt( hex.substring( 2 ), 16);
1
répondu Style-7 2018-01-04 14:21:21
String int2string = Integer.toHexString(INTEGERColor); //to ARGB
String HtmlColor = "#"+ int2string.substring(int2string.length() - 6, int2string.length()); // a stupid way to append your color
0
répondu chundk 2017-02-14 23:33:37