Это должно быть просто, но у меня возникли проблемы с изменением некоторого кода C, который использует побитовые операторы и переключается на Java.
В C у меня есть:
unsigned short Color(byte r, byte g, byte b)
{
return( ((unsigned short)g & 0x1F )<<10 | ((unsigned short)b & 0x1F)<<5 | (unsigned short)r & 0x1F);
}
Эта функция, Color, возвращает 16 бит, где 15 из них представляют три 5-битных значения для красного, зеленого и синего цветовых каналов. Я пытаюсь сделать что-то подобное в Java, но у меня проблемы с типами данных.
В Java у меня есть:
int r=someval, g=anotherval, b=yetanotherval;
И я хочу преобразовать эти целые числа в 2-байтовый тип данных и использовать те же операции побитового / сдвига, что и выше.
Как лучше всего подойти к этому? Я думал о 2-байтовом массиве, но это кажется ненужным.
редактировать
Итак, я попробовал Java на шортах, но проблема все еще остается. Я начал просто с:
short r=someval, g=anotherval, b=yetanotherval;
short colorData = g & 0x001F;
Но компилятор жалуется: «не может преобразовать из int в short»