Tengo un número entero generado a partir de un android.graphics.Color
El número entero tiene un valor de -16776961
¿Cómo convierto este valor en una cadena hexadecimal con el formato #RRGGBB?
En pocas palabras: me gustaría generar # 0000FF desde -16776961
Nota: no quiero que la salida contenga un alfa y también he probado este ejemplo sin ningún éxito
Respuestas:
La máscara se asegura de que solo obtengas RRGGBB, y el% 06X te da un hexágono con relleno cero (siempre 6 caracteres de largo):
fuente
Prueba Integer.toHexString ()
Fuente: en Java, ¿cómo convierto una matriz de bytes en una cadena de dígitos hexadecimales mientras mantengo los ceros a la izquierda?
fuente
0x000000FF
, o0xFF0000FF
si elimina el alfa.Creo que he encontrado la respuesta, este código convierte el entero en una cadena hexadecimal y elimina el alfa.
Tenga en cuenta que solo use este código si está seguro de que eliminar el alfa no afectaría nada.
fuente
0x00FFFFFF
esto, se bloquearáColor.parseColor
.Aquí esta lo que hice
Gracias chicos, sus respuestas hicieron lo
fuente
0x00FFFFFF
-> "FFFFFF" (sin alfa). La segunda variante no funciona para0x00000FFF
-> "F" (bits faltantes).String.format("#%08X", intColor)
Valor entero del color ARGB en cadena hexadecimal:
Cadena hexadecimal al valor entero del color ARGB:
fuente
Con este método Integer.toHexString , puede tener una excepción de color Desconocido para algunos colores al usar Color.parseColor.
Y con este método String.format ("#% 06X", (0xFFFFFF & intColor)) , perderá el valor alfa.
Entonces recomiendo este método:
fuente
fuente
Si lo usa
Integer.toHexString
, terminará con ceros perdidos cuando convierta colores como0xFF000123
. Aquí está mi solución basada en Kotlin que no requiere clases específicas de Android ni Java. Entonces también podría usarlo en proyectos multiplataforma:fuente