欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中Color和16進(jìn)制字符串互相轉(zhuǎn)換的方法

 更新時(shí)間:2018年07月05日 16:40:41   作者:天香閣主  
這篇文章主要給大家介紹了關(guān)于Java中Color和16進(jìn)制字符串互相轉(zhuǎn)換的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1.原理

主要是調(diào)用了toHexString(將int類型轉(zhuǎn)為16進(jìn)制字符串)、parseInt(將字符串解析為int)這兩個(gè)方法。

2.代碼

public static void main(String[] args) {
  String hexString = colorToHexValue(Color.RED);
  System.out.println("16進(jìn)制字符串:" + hexString);
  Color color = fromStrToARGB(hexString);
  System.out.println("16進(jìn)制字符串轉(zhuǎn)為顏色的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.關(guān)鍵點(diǎn)

4.1 toHexString:沒啥好說(shuō)的,JDK提供的將整數(shù)轉(zhuǎn)為16進(jìn)制字符串。

4.2 number & 0xff : 確保int類型數(shù)據(jù)只有后8位是有效的,高24位都是無(wú)效的(都是0),int類型是32位,但是顏色值最大就是255,只需要8位就可以滿足需求,因此就要確保傳入的數(shù)據(jù)是合法的顏色值,而大于255的數(shù)據(jù)就要當(dāng)作255處理,此時(shí)有兩種辦法,第一種就是本文這種處理方法,第二種就是加入判斷,如果數(shù)據(jù)大于255,那么就等于255,如果小于則不處理。相比較而言,本文處理方法是代碼最少的處理方法并且效率高。

4.3 &:按位“與”操作,如果二進(jìn)制碼同位都是1,那么結(jié)果就是1,否則就是0。

4.4 0xff: 0x代表它后面的是十六進(jìn)制的數(shù)字;f就是15,轉(zhuǎn)為2進(jìn)制就是1111,2個(gè)f則是1111 1111(10進(jìn)制的255),前面24位都是0,此時(shí)進(jìn)行與操作,就確保了只有0——255范圍內(nèi)的int值是有效顏色值。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • elasticsearch的靈魂唯一master選舉機(jī)制原理分析

    elasticsearch的靈魂唯一master選舉機(jī)制原理分析

    這篇文章主要為大家介紹了elasticsearch的靈魂唯一master選舉機(jī)制原理分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • java定時(shí)任務(wù)cron表達(dá)式每周執(zhí)行一次的坑及解決

    java定時(shí)任務(wù)cron表達(dá)式每周執(zhí)行一次的坑及解決

    這篇文章主要介紹了java定時(shí)任務(wù)cron表達(dá)式每周執(zhí)行一次的坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 用intellij Idea加載eclipse的maven項(xiàng)目全流程(圖文)

    用intellij Idea加載eclipse的maven項(xiàng)目全流程(圖文)

    這篇文章主要介紹了用intellij Idea加載eclipse的maven項(xiàng)目全流程(圖文),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • java使用泛型實(shí)現(xiàn)棧結(jié)構(gòu)示例分享

    java使用泛型實(shí)現(xiàn)棧結(jié)構(gòu)示例分享

    泛型是Java SE5.0的重要特性,使用泛型編程可以使代碼獲得最大的重用。由于在使用泛型時(shí)要指明泛型的具體類型,這樣就避免了類型轉(zhuǎn)換。本實(shí)例將使用泛型來(lái)實(shí)現(xiàn)一個(gè)棧結(jié)構(gòu),并對(duì)其進(jìn)行測(cè)試
    2014-03-03
  • Java中static的特點(diǎn)

    Java中static的特點(diǎn)

    本文主要介紹了Java中static的特點(diǎn)。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • java 中modCount 詳解及源碼分析

    java 中modCount 詳解及源碼分析

    這篇文章主要介紹了java 中modCount 詳解及源碼分析的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • java適配器模式如何讓不兼容的接口變得兼容

    java適配器模式如何讓不兼容的接口變得兼容

    這篇文章主要為大家介紹了java適配器模式如何讓不兼容的接口變得兼容示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Java中的List和MySQL中的varchar相互轉(zhuǎn)換的解決方案

    Java中的List和MySQL中的varchar相互轉(zhuǎn)換的解決方案

    實(shí)體類中有一個(gè) List<String> 類型的屬性,對(duì)應(yīng)于 MySQL 表里的 varchar 字段,使用 MyBatis 添加或查詢時(shí)能互相轉(zhuǎn)換,本文給大家介紹Java中的List和MySQL中的varchar相互轉(zhuǎn)換的解決方案,需要的朋友可以參考下
    2024-06-06
  • Java Guava排序器Ordering原理及代碼實(shí)例

    Java Guava排序器Ordering原理及代碼實(shí)例

    這篇文章主要介紹了Java Guava排序器Ordering原理及代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java中的Lambda表達(dá)式詳解

    Java中的Lambda表達(dá)式詳解

    這篇文章主要介紹了Java中的Lambda表達(dá)式詳解,Lambda 表達(dá)式是 JDK8 的一個(gè)新特性,可以取代大部分的匿名內(nèi)部類,寫出更優(yōu)雅的 Java 代碼,尤其在集合的遍歷和其他集合操作中,可以極大地優(yōu)化代碼結(jié)構(gòu),需要的朋友可以參考下
    2024-01-01

最新評(píng)論