разделить гекс на одну цифру в форматировании строки в Python - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь преобразовать значения RGB в короткий шестнадцатеричный формат, у меня длинная версия:

'#{:02x}{:02x}{:02x}'.format(r, g , b)

можно ли получить #fff вместо #ffffff без форматирования значений по одному впринять первые цифры?

Редактировать: мой код не требует большой точности цветов, поэтому он принимает сокращенную версию шестнадцатеричного кода цвета, в котором каждый цвет представлен одной цифрой, а вторая цифра опущена.

любое значение от 0 до 15 считается 0

любое значение от 16 до 31 считается 1

и так далее ...

1 Ответ

0 голосов
/ 22 января 2019

, поэтому у вас есть этот код для вывода значения 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...