, поэтому у вас есть этот код для вывода значения rgb на 24 бита
print('#{:02x}{:02x}{:02x}'.format(r, g , b))
если вы хотите вывести значение rgb на 12 битах только тогда, когда значение может быть сокращено
if (r % 17 == 0 and g % 17 == 0 and b % 17 == 0):
print('#{:01x}{:01x}{:01x}'.format(r/17, g/17, b/17))
else:
print('#{:02x}{:02x}{:02x}'.format(r, g , b))
если вы кодируете монохроматический цвет в 8 битах, у вас есть 256 значений от 0 до 255, поэтому у вас есть 255 интервалов.
если вы кодируете монохроматический цвет в 4 бита, у вас будет 16 значений от 0 до 15, поэтому у вас будет 15 интервалов.
, поэтому 255/15 => 17