Ich habe eine Ganzzahl, die aus einem Android.graphics.Color
generiert wurde.
Die Ganzzahl hat einen Wert von -16776961
Wie konvertiere ich diesen Wert in einen Hex-String mit dem Format #RRGGBB
Einfach ausgedrückt: Ich möchte # 0000FF von -16776961 ausgeben
Hinweis: Ich möchte nicht, dass die Ausgabe ein Alpha enthält, und ich habe dieses Beispiel ohne Erfolg versucht
Die Maske stellt sicher, dass Sie nur RRGGBB erhalten, und mit% 06X erhalten Sie ein mit Nullen aufgefülltes Hex (immer 6 Zeichen lang):
String hexColor = String.format("#%06X", (0xFFFFFF & intColor));
Versuchen Sie es mit Integer.toHexString ().
Ich glaube, ich habe die Antwort gefunden. Dieser Code konvertiert die Ganzzahl in eine Hex-Zeichenfolge und entfernt das Alpha.
Integer intColor = -16895234;
String hexColor = "#" + Integer.toHexString(intColor).substring(2);
Hinweis Verwenden Sie diesen Code nur, wenn Sie sicher sind, dass das Entfernen des Alphabets nichts beeinflusst.
Hier ist was ich getan habe
int color=//your color
Integer.toHexString(color).toUpperCase();//upercase with alpha
Integer.toHexString(color).toUpperCase().substring(2);// uppercase without alpha
Danke Jungs ihr habt das Ding gemacht
Mit dieser Methode Integer.toHexString können Sie bei Verwendung von Color.parseColor für einige Farben eine Unbekannte Farbausnahme haben.
Und mit dieser Methode String.format ("#% 06X", (0xFFFFFF & intColor)) verlieren Sie den Alpha-Wert.
Also empfehle ich diese Methode:
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());
}
Ganzzahliger Wert der ARGB-Farbe in hexadezimaler Zeichenfolge:
String hex = Integer.toHexString(color); // example for green color FF00FF00
Hexadezimaler String in Ganzzahl für die ARGB-Farbe:
int color = (Integer.parseInt( hex.substring( 0,2 ), 16) << 24) + Integer.parseInt( hex.substring( 2 ), 16);
String int2string = Integer.toHexString(INTEGERColor); //to ARGB
String HtmlColor = "#"+ int2string.substring(int2string.length() - 6, int2string.length()); // a stupid way to append your color