Eu tenho um número inteiro que foi gerado a partir de um android.graphics.Color
O número inteiro tem um valor de -16776961
Como converter esse valor em uma sequência hexadecimal com o formato #RRGGBB
Simplificando: eu gostaria de enviar # 0000FF a partir de -16776961
Nota: Eu não quero que a saída contenha um alfa e também tentei este exemplo sem êxito
Respostas:
A máscara garante que você obtenha apenas RRGGBB, e o% 06X fornece hexadecimal com preenchimento zero (sempre com 6 caracteres):
fonte
Tente Integer.toHexString ()
Origem: em Java, como faço para converter uma matriz de bytes em uma sequência de dígitos hexadecimais, mantendo os zeros à esquerda?
fonte
0x000000FF
ou0xFF0000FF
se você remover o alfa.Eu acredito que encontrei a resposta, este código converte o número inteiro em uma sequência hexadecimal e remove o alfa.
Observe apenas esse código se tiver certeza de que a remoção do alfa não afetaria nada.
fonte
0x00FFFFFF
isso, ele falharáColor.parseColor
.Aqui está o que eu fiz
Obrigado pessoal vocês respostas fizeram a coisa
fonte
0x00FFFFFF
-> "FFFFFF" (sem alfa). A segunda variante não funciona para0x00000FFF
-> "F" (bits ausentes).String.format("#%08X", intColor)
Valor inteiro da cor ARGB em sequência hexadecimal:
Sequência hexadecimal para valor inteiro da cor ARGB:
fonte
Com este método Integer.toHexString , você pode ter uma exceção de cor Desconhecida para algumas cores ao usar Color.parseColor.
E com este método String.format ("#% 06X", (0xFFFFFF & intColor)) , você perderá o valor alfa.
Então, eu recomendo este método:
fonte
fonte
Se você usar,
Integer.toHexString
você terminará com zeros perdidos quando converter cores como0xFF000123
. Aqui está minha solução baseada no kotlin, que não requer nem classes específicas do android nem java. Então você também pode usá-lo no projeto multiplataforma:fonte