Эти числа представляют собой 4 цветовых компонента (красный, зеленый, синий и альфа, по 8 бит каждый, и не обязательно в этом порядке), упакованные в 32-разрядное целое число без знака.
Для извлечения этих компонентов, по сути, вам нужно извлечь значение всех байтов, которые составляют 4-байтовое целое число. Для этого у вас есть несколько способов, но самый простой для понимания, вероятно, таков: последовательное деление на 256.
Поскольку значение каждого байта находится в диапазоне [0..255], вы будете извлекать информацию из 1 байта каждый раз, когда вычисляете остаток от деления этого большого числа на 256 (представьте, что байт является базовым 256 цифр.)
Итак, вот код:
unsigned char b0 = x % 256;
x = x / 256;
unsigned char b1 = x % 256;
x = x / 256;
unsigned char b2 = x % 256;
x = x / 256;
unsigned char b3 = x % 256;
В приведенном выше коде b0
получит значение младшего байта в x
, а b3
будет иметь самый старший. Какой из них будет, какой компонент будет зависеть от порядка цветовых компонентов (будь то RGBA или BGRA или ARGB или ABGR), и, скорее всего, также от порядкового номера вашей машины. Но я думаю, что это будет легко понять.
Учитывая вид номеров примеров, которые вы опубликовали, я думаю, что наиболее значимый байт числа - это альфа-канал (т. Е. b3
в моем коде дает вам альфа-значение), и это, вероятно, составляет b0
быть красным, b1
зеленым и b2
синим. Возможно.