十六进制值的数据类型是什么,如0xD2691E?

时间:2013-04-10 12:02:18

标签: iphone ios objective-c c

我正在尝试编写一个方法,它接受一个十六进制值,例如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);  

4 个答案:

答案 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