Я работаю на Java/Android, и я хочу взять цвет 0xFFFFFFFF
и разбить его на 4 байта для красного, зеленого, синего и альфа. Я знаю, что у Color
есть методы для извлечения определенных значений цвета, но он дает им как int
. Я прошел через SDK и обнаружил, что метод Color.red(color)
совпадает с выражением (color >> 16) & 0xFF
, честно говоря, я понятия не имею, что это значит, но я думаю, что могу каким-то образом использовать это,
Я пробовал делать
byte red = (byte)Color.red(color);
но это, похоже, не работает. Все дело в том, что я могу комбинировать значения в OpenGL с помощью метода
glColorPointer(4, GL_UNSIGNED_BYTE, 4, myColors);
myColors является байтом [].
Любая помощь/советы/баллы были бы весьма полезны.
Если у Цвет есть методы для извлечения определенных значений цвета, извлеките Red как int и сделайте его Hex, затем Green, затем Blue. Вы также можете извлечь альфу. с Integer.toHexString(int)
вы можете напечатать значение Hex для int. (color >> 16) & 0xFF
позиционирует красный цвет (путем смещения бит и добавления) к первым двум из шести шестигранников не-альфа-цвета. non alpha Color RBG состоит из 3 байтов информации. Каждый байт является одним цветом с порядком R (красный) B (синий) G (зеленый). 0xFF - один байт, если установлено значение "Красный", означает, что цвет имеет полный красный и т.д. И т.д.