移动开发 十进制转颜色

一般色值都是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];

}

android

public 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);
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值