一般色值都是16进制数字,项目中有时候回碰到10进制数字转颜色。iOS代码之前网上找的,android的是通过规律自己写的。
转换的原理:
1.将10进制转成16进制
2.将16进制的字符串两两拆分
3.通过RGB显示颜色,正常的16进制直接可以显示,转换的需要把R和B对应的值进行替换。
4.在前面加上号,转成颜色
ios
-(UIColor *)getColorFromString:(NSString *)colorString{
int colorInt=[colorString intValue];
NSLog(@"%@",colorString);
if (colorInt==255) {
NSLog(@"aa");
}
if(colorInt<0)
return [UIColor whiteColor];
NSString *nLetterValue;
NSString *colorString16 =@"";
int ttmpig;
for (int i = 0; i<9; i++)
{
ttmpig=colorInt%16;
colorInt=colorInt/16;
switch (ttmpig)
{
case 10:
nLetterValue =@"A";break;
case 11:
nLetterValue =@"B";break;
case 12:
nLetterValue =@"C";break;
case 13:
nLetterValue =@"D";break;
case 14:
nLetterValue =@"E";break;
case 15:
nLetterValue =@"F";break;
default:nLetterValue=[[NSString alloc]initWithFormat:@"%i",ttmpig];
}
colorString16 = [nLetterValue stringByAppendingString:colorString16];
if (colorInt == 0)
break;
}
colorString16 = [[colorString16 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
//去掉前后空格换行符
// strip 0X if it appears
if ([colorString16 hasPrefix:@"0X"])
colorString16 = [colorString16 substringFromIndex:2];
if ([colorString16 hasPrefix:@"#"])
colorString16 = [colorString16 substringFromIndex:1];
// String should be 6 or 8 characters
if ([colorString16 length] < 6)
{
int cc=6-[colorString16 length];
for (int i=0; i<cc; i++)
colorString16=[@"0" stringByAppendingString:colorString16];
}
// NSLog(@"%@",colorString16);
if ([colorString16 length] != 6)
return [UIColor whiteColor]; // Separate into r, g, b substrings
NSRange range;
range.location = 0;
range.length = 2;
NSString *bString = [colorString16 substringWithRange:range];
range.location = 2;
NSString *gString = [colorString16 substringWithRange:range];
range.location = 4;
NSString *rString = [colorString16 substringWithRange:range];
// Scan values
unsigned int r, g, b;
[[NSScanner scannerWithString:rString] scanHexInt:&r];
//扫描16进制到int
[[NSScanner scannerWithString:gString] scanHexInt:&g];
[[NSScanner scannerWithString:bString] scanHexInt:&b];
return [UIColor colorWithRed:((float) r / 255.0f)
green:((float) g / 255.0f)
blue:((float) b / 255.0f)
alpha:1.0f];
}
androidpublic int getColorFromString(String colorString){ String colorString16= (Integer.toHexString(Integer.valueOf(colorString))+"").toUpperCase(); if (colorString16.length()==1){ colorString16="00000"+colorString16; }else if (colorString16.length()==2){ colorString16="0000"+colorString16; }else if (colorString16.length()==3){ colorString16="000"+colorString16; }else if (colorString16.length()==4){ colorString16="00"+colorString16; }else if (colorString16.length()==5){ colorString16="0"+colorString16; } String bString = colorString16.substring(0,2); String gString = colorString16.substring(2,4); String rString = colorString16.substring(4,6); return Color.parseColor("#"+rString+gString+bString); }