我正在尝试编写一个方法,它接受一个十六进制值,例如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);
答案 0 :(得分:12)
像
0xD2691E
这样的十六进制值的数据类型是什么?
根据C标准,十六进制常量的类型是此列表中可以表示其值的第一个:
C11(n1570),§6.4.4.1整数常量
int unsigned int long int unsigned long int long long int unsigned long long int
由于D2691E
(b16)等于13789470
(b10),因此常量的类型取决于您的实现。
C标准仅保证INT_MAX >= +32767
,而LONG_MAX >= +2147483647
。
C11(n1570),5.2.4.2.1整数类型的大小
INT_MAX +32767
LONG_MAX +2147483647
因此,(unsigned) long int
可能是一个合适的选择。
答案 1 :(得分:1)
从我记得它们就像int或unsigned int。
答案 2 :(得分:1)
请尝试使用这个......
unsigned long long
unsigned long int
答案 3 :(得分:0)
在此方法中,它们执行按位AND
操作,因此必须为unsigned of int OR long