Каков тип данных шестнадцатеричного значения, такого как 0xD2691E?

Я пытаюсь написать метод, который принимает шестнадцатеричное значение, например 0xD2691E, для возвращения объекта UIColor.

I нашел этот макрос, который я хочу преобразовать в метод, но я не знаю, как указать тип данных, отличный от 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);  

Ответ 1

Что такое тип данных шестнадцатеричного значения, например 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 может быть подходящим выбором.

Ответ 2

из того, что я помню, они что-то вроде int или unsigned int.

Ответ 3

Пожалуйста, попробуйте использовать этот...

    unsigned long long 
    unsigned long int

Ответ 4

В этом методе они выполняют побитовую операцию AND, поэтому она должна быть unsigned of int OR long