Значение RGB может быть сохранено как целое число через 0xRRGGBB.Примеры:
- Красный: 0xff0000
- Зеленый: 0x00ff00
- Синий: 0x0000ff
00 - шестнадцатеричное для десятичного 0, тогда как ffравно 255. 0 соответствует 0,0, а 255 - 1,0.(На самом деле вы не указали, что это за диапазон. Я предполагаю, что от 0,0 до 1,0.)
Итак, с учетом вышеизложенных допущений, вам нужно извлечь каждый компонент и разделить на 255. Поскольку это звучит очень похоже навопрос домашней работы, я просто покажу вам, как вы можете сделать красный компонент.
int hex = 0x123456;
c.r = ((hex >> 16) & 0xff) / 255.0;
Каждая шестнадцатеричная цифра занимает 4 бита.Поэтому сдвиньте вправо на 16 бит (чтобы переместить все 4 цифры вправо), чтобы 0xRRGGBB
стал 0xRR
.Теперь у вас есть красный компонент.(На всякий случай, если в целом числе есть данные выше, вы можете избавиться от них, маскируя данные с помощью & 0xff
.)
Если вы имеете дело со строкой "#FFFFFF"
, тогда вы 'Сначала нужно преобразовать его в целое число, чтобы вышеприведенное сработало.