Java中Color和16進制字符串互相轉換的方法
1.原理
主要是調用了toHexString(將int類型轉為16進制字符串)、parseInt(將字符串解析為int)這兩個方法。
2.代碼
public static void main(String[] args) {
String hexString = colorToHexValue(Color.RED);
System.out.println("16進制字符串:" + hexString);
Color color = fromStrToARGB(hexString);
System.out.println("16進制字符串轉為顏色的ARGB值:("+String.valueOf(color.getAlpha())+","+String.valueOf(color.getRed())+","
+String.valueOf(color.getGreen())+","+String.valueOf(color.getBlue())+")");
}
private static String colorToHexValue(Color color) {
return intToHexValue(color.getAlpha()) + intToHexValue(color.getRed()) + intToHexValue(color.getGreen()) + intToHexValue(color.getBlue());
}
private static String intToHexValue(int number) {
String result = Integer.toHexString(number & 0xff);
while (result.length() < 2) {
result = "0" + result;
}
return result.toUpperCase();
}
private static Color fromStrToARGB(String str) {
String str1 = str.substring(0, 2);
String str2 = str.substring(2, 4);
String str3 = str.substring(4, 6);
String str4 = str.substring(6, 8);
int alpha = Integer.parseInt(str1, 16);
int red = Integer.parseInt(str2, 16);
int green = Integer.parseInt(str3, 16);
int blue = Integer.parseInt(str4, 16);
Color color = new Color(red, green, blue, alpha);
return color;
}
3.效果

4.關鍵點
4.1 toHexString:沒啥好說的,JDK提供的將整數轉為16進制字符串。
4.2 number & 0xff : 確保int類型數據只有后8位是有效的,高24位都是無效的(都是0),int類型是32位,但是顏色值最大就是255,只需要8位就可以滿足需求,因此就要確保傳入的數據是合法的顏色值,而大于255的數據就要當作255處理,此時有兩種辦法,第一種就是本文這種處理方法,第二種就是加入判斷,如果數據大于255,那么就等于255,如果小于則不處理。相比較而言,本文處理方法是代碼最少的處理方法并且效率高。
4.3 &:按位“與”操作,如果二進制碼同位都是1,那么結果就是1,否則就是0。
4.4 0xff: 0x代表它后面的是十六進制的數字;f就是15,轉為2進制就是1111,2個f則是1111 1111(10進制的255),前面24位都是0,此時進行與操作,就確保了只有0——255范圍內的int值是有效顏色值。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關文章
elasticsearch的靈魂唯一master選舉機制原理分析
這篇文章主要為大家介紹了elasticsearch的靈魂唯一master選舉機制原理分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04
java定時任務cron表達式每周執(zhí)行一次的坑及解決
這篇文章主要介紹了java定時任務cron表達式每周執(zhí)行一次的坑及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06
用intellij Idea加載eclipse的maven項目全流程(圖文)
這篇文章主要介紹了用intellij Idea加載eclipse的maven項目全流程(圖文),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12
Java中的List和MySQL中的varchar相互轉換的解決方案
實體類中有一個 List<String> 類型的屬性,對應于 MySQL 表里的 varchar 字段,使用 MyBatis 添加或查詢時能互相轉換,本文給大家介紹Java中的List和MySQL中的varchar相互轉換的解決方案,需要的朋友可以參考下2024-06-06

