加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 19:47:08 所属栏目:Java 来源:网络整理
导读:1.原理 主要是调用了toHexString(将int类型转为16进制字符串)、parseInt(将字符串解析为int)这两个方法。 2.代码 public static void main(String[] args) { String hexString = colorToHexValue(Color.RED); System.out.println("16进制字符串:" + hexS

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值是有效颜色值。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。

您可能感兴趣的文章:

  • java中进制的转换,Byte与16进制的转换方法
  • java实现汉字转unicode与汉字转16进制实例
  • java发送heartbeat心跳包(byte转16进制)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读