2013-08-28 81 views
3

如何将UIColor对象转换为uint32_t值。请让我知道是否有人知道这一点?如何将UIColor RGB颜色转换为uint32_t值

下面是代码:

const CGFloat *components = CGColorGetComponents([UIColor redColor].CGColor); 
    CGFloat r = components[0]; 
    CGFloat g = components[1]; 
    CGFloat b = components[2]; 
    const uint32_t rgb = ((uint32_t)r << 16 | (uint32_t)g << 8 | (uint32_t)b); 

如何uint32_t的传递0xFFFFFFFF的价值?

const uint32_t white = 0xFFFFFFFF, black = 0xFF000000, transp = 0x00FFFFFF; 

回答

3

如果要转换十六进制字符串为整数值,你应该试试这个:

unsigned int outVal; 
NSScanner* scanner = [NSScanner scannerWithString:@"0xFF000000"]; 
[scanner scanHexInt:&outVal]; 
+0

其工作。我能够获得价值。 –

+0

这里是我的代码在哪里我将UIColor转换为uint32_t。问题是当我传递[Uicolor redColor]时,它的蓝色会发生变化。显示当我通过[UIColor blueColor]时,它会显示红色。我不明白我错在哪里?请帮助我。+(NSString *)getHexStringForColor:(UIColor *)color const CGFloat * components = CGColorGetComponents(color.CGColor); CGFloat red = components [0]; CGFloat green = components [1]; CGFloat blue = components [2]; NSString * hexString = [NSString stringWithFormat:@“%02X%02X%02X”,(int)(red * 255),(int)(green * 255),(int)(blue * 255)]; return hexString;} –

+0

NSString * colorHex = [QREncoder getHexStringForColor:[UIColor blueColor]]; colorHex = [NSString stringWithFormat:@“0xFF%@”,colorHex]; NSScanner * scanner = [NSScanner scannerWithString:colorHex]; uint32_t scanedVal; [scanner scanHexLongLong:(unsigned long long *)&scanedVal]; const uint32_t white = 0xFFFFFFFF,black = scanedVal,transp = 0x00FFFFFF; –