Как присоединить одну цифру к другой?

У меня есть такой градиент: 
Код:
this.drawGradientRect( 0, 0, widtht, height, 0x10092099, 0x10092099);
Нужно менять значение 0х10092099 (Красным цветом это то значение которые должно меняться) То есть нужно присоединить 0х100920 + perZnach (которое может меняться от 1 до 99) Но я не знаю как правильно это сделать, если писать так 0х100920 + perZnach, то значение прибавляется, а нужно чтобы присоединялось. Может всё возможно сделать проще, но мне просто нужно менять прозрачность градиента и я подумал об этом. Подскажите пожалуйста если знаете, спасибо!
 

timaxa007

Модератор
5,831
409
672
Менять шагами, не знаю как сделать проще, но я типа его превращаю на отдельные переменные изменяю нужную переменную и обратно собираю.
 
Вот, как её разбить на отдельные переменные? и собрать обратно?
 

timaxa007

Модератор
5,831
409
672
Код:
int color_hex = 0х10092099;
int alpha = (color_hex >> 24 & 0xFF);
int red = (color_hex >> 16 & 0xFF);
int green = (color_hex >> 8 & 0xFF);
int blue = (color_hex & 0xFF);

int adding = 16;
if ((blue + adding) < 0xFF) {
blue += adding;
}

color_hex = alpha << 24 | red << 16 | green << 8 | blue;
Вроде как-то так.
 
808
3
124
Разбивать долго и не нужно. Если очень хочется разбить, то можно тем же способом. Пусть твое perZnach = 50.
1) 0х10092099 & 0xFFFFFF00 = 0x10092000
2) 0x10092000 | perZnach = 0x10092050

Случай посложнее, когда нужно заменить, например, красный.
1) 0x10092099 & 0xFF00FFFF = 0x10002099
2) 0x10002099 | (perZnach << 16) = 0x10502099 (смещаем на 16 бит влево, потом складываем)

Обрати внимание, что стоит использовать | вместо +, потому что | - побитовая операция, которая никаких сюрпризов при работе с отрицательными числами не выдаст. Например, 0xFFFFFFFF - отрицательное число.
 
Сверху