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.Alpha())+","+String.Red())+","
+String.Green())+","+String.Blue())+")");
}
private static String colorToHexValue(Color color) {
return Alpha()) + Red()) + Green()) + Blue());16进制字符串转16进制数组
}
private static String intToHexValue(int number) {
String result = HexString(number & 0xff);
while (result.length() < 2) {
result = "0" + result;
}
UpperCase();
}
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值是有效颜⾊值。
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论