当前位置: 首页 > 编程笔记 >

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

琴琪
2023-03-14
本文向大家介绍Java中Color和16进制字符串互相转换的方法,包括了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值是有效颜色值。

总结

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

 类似资料:
  • 本文向大家介绍php将字符串转换成16进制的方法,包括了php将字符串转换成16进制的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php将字符串转换成16进制的方法。分享给大家供大家参考。具体分析如下: php中可以通过bin2hex函数将字符串转换成16进制的形式输出,bin2hex()函数返回结果为ascii码 输出结果如下: 希望本文所述对大家的php程序设计有所帮助。

  • 本文向大家介绍C#中图片、二进制与字符串的相互转换方法,包括了C#中图片、二进制与字符串的相互转换方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#中图片、二进制与字符串的相互转换方法。分享给大家供大家参考,具体如下: PS:这里小编再给大家推荐本站的一款图片转BASE64格式的在线转换工具,非常具有实用价值: 在线图片转换BASE64工具: http://tools.jb51.ne

  • 本文向大家介绍Python 16进制与中文相互转换的实现方法,包括了Python 16进制与中文相互转换的实现方法的使用技巧和注意事项,需要的朋友参考一下 Python中编码问题:u'\xe6\x97\xa0\xe5\x90\x8d' 类型的转为utf-8的解决办法 相信小伙伴们遇到过类似这样的问题,python2中各种头疼的转码,类似u'\xe6\x97\xa0\xe5\x90\x8d' 的编码

  • 本文向大家介绍C# 16 进制字符串转 int的方法,包括了C# 16 进制字符串转 int的方法的使用技巧和注意事项,需要的朋友参考一下 最近在写硬件,发现有一些测试是做 16 进制的字符串,需要把他转换为整形才可以处理。 本文告诉大家如何从 16 进制转整形。 如果输入的是 0xaa 这时转换 int 不能使用 Parse 不然会出现异常 如果需要转换十六进制就需要使用 Convert 才可以

  • 将任意给定值转换为16进制字符串。数值字符串将解释为数值,文本字符串将解释为utf-8字符串。 调用: web3.utils.toHex(mixed) 参数: mixed - String|Number|BN|BigNumber: 要进行转换的输入 返回值: String: 结果16进制字符串 示例代码: web3.utils.toHex('234'); > "0xea" web3.utils

  • 返回指定ASCII字符串的16进制表示。 调用: web3.utils.asciiToHex(string) web3.utils.fromAscii(string) // 别名,已弃用 参数: string - String: ASCII字符串 返回值 String: 16进制字符串 示例代码: web3.utils.asciiToHex('I have 100!'); > "0x492068