我正在尝试编写一种方法,该方法采用诸如0xD2691E之类的十六进制值以返回UIColor对象。

我想将found this macro转换为方法,但是除了void *,我不知道如何指定数据类型。

#define UIColorFromRGB(rgbValue) [UIColor \
       colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
       green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \
       blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

  //Then use any Hex value

 self.view.backgroundColor = UIColorFromRGB(0xD2691E);

最佳答案



根据C标准,十六进制常量的类型是该列表中可以表示其值的第一个:



由于D2691E(b16)等于13789470(b10),因此常量的类型取决于您的实现。

C标准仅保证INT_MAX >= +32767,而LONG_MAX >= +2147483647



因此,(unsigned) long int可能是一个合适的选择。

09-11 18:01