2018年Java中Color与16进制字符串互相转换:原理、代码及关键点详解

Java中Color和16进制字符串互相转换的方法

2018年Java中Color与16进制字符串互相转换:原理、代码及关键点详解

更新时间为 2018 年 07 月 05 日 16 时 40 分 41 秒,作者是天香阁主。

这篇文章主要给大家介绍了 Java 中 Color 与 16 进制字符串相互转换的相关资料。文中通过示例代码进行了非常详细的介绍。这些内容对大家的学习或者工作具有一定的参考学习价值。需要的朋友们可以跟着小编一起来学习学习。

1.原理

主要调用了将 int 类型转为 16 进制字符串的 toHexString 方法,以及将字符串解析为 int 的 parseInt 方法。

2.代码

公共静态的 void 方法 main,该方法接受一个字符串数组参数 args。
使用 colorToHexValue 函数可以将 Color.RED 转换为十六进制字符串,该十六进制字符串存储在 hexString 变量中。
输出的内容为:“16 进制字符串:”加上 hexString 这个变量的值。
Color 被赋值为通过 fromStrToARGB 函数处理后的 hexString 所对应的颜色值。
输出“16 进制字符串转为颜色的 ARGB 值:”以及颜色的透明度值(通过 color.getAlpha()获取并转换为字符串)、红色值(通过 color.getRed()获取并转换为字符串)等信息,即“("+String.valueOf(color.getAlpha())+","+String.valueOf(color.getRed())+","
获取颜色的绿色分量值并转换为字符串,然后加上逗号,再获取颜色的蓝色分量值并转换为字符串,最后加上右括号。即:先将 color.getGreen()转换为字符串,再加上逗号,接着将 color.getBlue()转换为字符串,最后加上右括号。具体为:String.valueOf(color.getGreen())加上逗号后再加上 String.valueOf(color.getBlue()),最后加上右括号。也就是:(String.valueOf(color.getGreen())+","+String.valueOf(color.getBlue())+")")。
 }
如果 color 不为 null,则获取其红色分量、绿色分量和蓝色分量,分别用 red、green、blue 表示。然后将 red、green、blue 分别转换为十六进制字符串,不足两位的在前面补 0。最后将这三个十六进制字符串拼接起来,形成一个六位的十六进制颜色值并返回。如果 color 为 null,则返回 null。
返回将 color 的 alpha 值转换为十六进制的结果加上将 color 的红色值转换为十六进制的结果加上将 color 的绿色值转换为十六进制的结果加上将 color 的蓝色值转换为十六进制的结果。
 }
如果要将一个整数转换为十六进制值,那么可以通过以下方式实现。首先获取整数的二进制表示,然后将二进制转换为十六进制。具体来说,对于给定的整数 number,通过特定的算法将其转换为十六进制的字符串表示。
将一个数与 0xff 进行按位与运算后,再将结果转换为十六进制字符串,这个字符串就是最终的结果。具体来说,就是通过 Integer.toHexString 方法,把 number 与 0xff 按位与运算后的结果转换为十六进制表示的字符串,这个字符串就是最终的 result。
  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.关键点

没啥好说的,JDK 提供了将整数转为 16 进制字符串的功能,这就是 toHexString 。

确保 int 类型数据的后 8 位有效,高 24 位无效(为 0)。因为 int 类型是 32 位,而颜色值最大为 255 只需 8 位就能满足需求,所以要确保传入的数据是合法的颜色值。对于大于 255 的数据,要当作 255 处理,此时有两种办法,一是本文的处理方法,二是加入判断,若数据大于 255 则等于 255,若小于则不处理。相比较而言,本文处理方法是代码最少的处理方法并且效率高。

按位“与”操作,即如果两个二进制码在相同的位上都是 1,那么结果为 1;如果相同位上不全是 1,那么结果为 0。

4.4 0xff:0x 表示它后面的是十六进制数字;f 代表 15,转化为二进制是 1111,两个 f 就是 11111111(十进制的 255);前面 24 位都为 0,此时进行与操作,就能确保只有 0 到 255 范围内的 int 值是有效颜色值。

总结

这篇文章已全部呈现。希望其内容能对大家的学习或工作有参考价值。若有疑问,可留言交流。感谢大家对脚本之家的支持。

你可能想看:
« 上一篇
下一篇 »

相关推荐

java中什么是冒泡,冒泡算法

2026年09月06日

27阅读

java中冒号,java双冒号

2026年09月06日

26阅读

java中的->,java中的是什么意思

2026年09月06日

24阅读

java中的super用法,Java中super的说明

2026年09月06日

28阅读

java中反射的应用,java中反射的应用场景

2026年09月06日

23阅读

java中开关的定义,Java关键字有哪些

2026年09月06日

25阅读