Ответ 1
Маска гарантирует, что вы получите только RRGGBB, а% 06X дает нулевое шестнадцатеричное (всегда 6 символов):
String hexColor = String.format("#%06X", (0xFFFFFF & intColor));
У меня есть целое число, которое было создано из android.graphics.Color
Целое число имеет значение -16776961
Как преобразовать это значение в шестнадцатеричную строку с форматом #RRGGBB
Проще говоря: я хотел бы выводить # 0000FF из -16776961
Примечание: Я не хочу, чтобы на выходе содержалась альфа, и я также без проблем пытался этот пример
Маска гарантирует, что вы получите только RRGGBB, а% 06X дает нулевое шестнадцатеричное (всегда 6 символов):
String hexColor = String.format("#%06X", (0xFFFFFF & intColor));
Попробуйте Integer.toHexString()
Источник: В Java, как преобразовать массив байтов в строку шестнадцатеричных цифр, сохраняя ведущие нули?
Я верю, что нашел ответ. Этот код преобразует целое число в шестнадцатеричную строку, удаляет альфу.
Integer intColor = -16895234;
String hexColor = "#" + Integer.toHexString(intColor).substring(2);
Примечание используйте этот код только в том случае, если вы уверены, что удаление альфы не повлияет ни на что.
Вот что я сделал
int color=//your color
Integer.toHexString(color).toUpperCase();//upercase with alpha
Integer.toHexString(color).toUpperCase().substring(2);// uppercase without alpha
Спасибо, ребята, вы ответили.
С помощью этого метода Integer.toHexString вы можете иметь исключение Неизвестного цвета для некоторых цветов при использовании Color.parseColor.
И с помощью этого метода String.format( "#% 06X", (0xFFFFFF и intColor)), вы потеряете значение альфа.
Поэтому я рекомендую этот метод:
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());
}
String int2string = Integer.toHexString(INTEGERColor); //to ARGB
String HtmlColor = "#"+ int2string.substring(int2string.length() - 6, int2string.length()); // a stupid way to append your color