Как преобразовать целое число цвета в шестнадцатеричную строку в Android?


197

У меня есть целое число, которое было сгенерировано из android.graphics.Color

Целое число имеет значение -16776961

Как мне преобразовать это значение в шестнадцатеричную строку в формате #RRGGBB

Проще говоря: я хотел бы вывести # 0000FF из -16776961

Примечание: я не хочу, чтобы вывод содержал альфа, и я также попробовал этот пример без какого-либо успеха


Что вы пытаетесь установить в шестнадцатеричном цвете? Я думаю, что здесь есть другой ответ
Бланделл

@Blundell Я экспортирую цвет во внешнее приложение. Цвет должен быть в этом формате #RRGGBB
Bosah Chude

Так что не так с developer.android.com/reference/android/content/res/… ? Вам нужно будет вставить URL или прокрутку, чтобы получить getColor (int)
Blundell

Получаю сырые целые числа. Значения не взяты из виджета о ресурсах
Bosah Chude

Ответы:


472

Маска гарантирует, что вы получите только RRGGBB, а% 06X дает вам гекс с нулевым отступом (всегда 6 символов в длину):

String hexColor = String.format("#%06X", (0xFFFFFF & intColor));

3
Это сработало отлично, спасибо! Проще и точнее, чем пытаться использовать подстроку в Integer.toHexString ().
Том

7
Я только что понял, что есть метод Color.parseColor (String hex), который делает именно то, что я прошу.
Марсель Бро

4
int colorInt = 0xff000000 | Integer.parseInt (hexString, 16);
Джош

5
Не используйте этот ответ, если ваш цвет использует альфа. Вы потеряете это.
Саймон

5
@Simon, чтобы сделать эту альфа-готовую, просто удалите маску и измените 6 на 8. Обратите внимание, что OP попросил отклонить альфа.
TWiStErRob
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.