Ich habe eine Ganzzahl, die aus einem generiert wurde android.graphics.Color
Die Ganzzahl hat einen Wert von -16776961
Wie konvertiere ich diesen Wert in eine Hex-Zeichenfolge 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 auch ohne Erfolg ausprobiert
Antworten:
Die Maske stellt sicher, dass Sie nur RRGGBB erhalten, und% 06X gibt Ihnen null aufgefülltes Hex (immer 6 Zeichen lang):
quelle
Versuchen Sie Integer.toHexString ()
Quelle: Wie konvertiere ich in Java ein Byte-Array in eine Folge von Hex-Ziffern, während führende Nullen beibehalten werden?
quelle
0x000000FF
oder0xFF0000FF
wenn Sie das Alpha entfernen.Ich glaube, ich habe die Antwort gefunden. Dieser Code konvertiert die Ganzzahl in eine Hex-Zeichenfolge und entfernt das Alpha.
Beachten Sie, dass Sie diesen Code nur verwenden, wenn Sie sicher sind, dass das Entfernen des Alphas nichts beeinflusst.
quelle
0x00FFFFFF
wird es abstürzenColor.parseColor
.Hier ist was ich getan habe
Danke Jungs, deine Antworten haben das Ding gemacht
quelle
0x00FFFFFF
-> "FFFFFF" (kein Alpha). Die zweite Variante funktioniert nicht für0x00000FFF
-> "F" (fehlende Bits).String.format("#%08X", intColor)
Ganzzahliger Wert der ARGB-Farbe zur hexadezimalen Zeichenfolge:
Hexadezimaler String zum ganzzahligen Wert der ARGB-Farbe:
quelle
Mit dieser Methode Integer.toHexString können Sie bei Verwendung von Color.parseColor für einige Farben eine Ausnahme für unbekannte Farben festlegen.
Und mit dieser Methode String.format ("#% 06X", (0xFFFFFF & intColor)) verlieren Sie den Alpha-Wert.
Daher empfehle ich diese Methode:
quelle
quelle
Wenn Sie verwenden, werden
Integer.toHexString
Sie beim Konvertieren von Farben wie mit fehlenden Nullen enden0xFF000123
. Hier ist meine Kotlin-basierte Lösung, die weder androidspezifische Klassen noch Java benötigt. Sie können es also auch in Multiplattform-Projekten verwenden:quelle