Возможно, ЖК-дисплей понимает только 4-битные каналы?В любом случае звучит так, что это предел библиотеки:)
Для преобразования в 12-битное значение (3 канала x 4 бита / канал) из 24-битного значения (3 канала x 8 бит)/ канал), просто уменьшите каждый канал с коэффициентом 2 4 - то есть разделите значение каждого 8-битного канала [0-255] на 16, чтобы получить приблизительное значениезначение в 4-битном канале [0-15].
Теперь рассмотрим следующее: «деление на 16» и «смещение вправо на 4» (без расширения знака) практически одинаково для дополнения без знака 2целые числа.То есть младшие 4 бита просто «выбрасываются».
Представьте себе это 24-битное значение в битах (с добавлением 32-битного целого):
00000000RRRRrrrrGGGGggggBBBBbbbb
И этоцелевое значение (дополненное 16-разрядным целым числом):
0000RRRRGGGGBBBB // just get rid of the "small letter" bits :)
И обратите внимание, что это можно получить с помощью последовательности побитовых операций:
r12 = (hex24 >> 20) & 0xF
g12 = (hex24 >> 12) & 0xF
b12 = (hex24 >> 4) & 0xF
hex12 = (r12 << 8) | (g12 << 4) | b12
Счастливое кодирование.