在python中以字符串格式将十六进制剥离为一位数字

时间:2019-01-21 21:58:45

标签: python string format

我正在尝试将RGB值转换为短十六进制格式,我使用的是长版本:

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

是否有可能获得#fff而不是#ffffff而不将值一一格式化以获取第一位数字?

编辑: 我的代码对颜色的准确性要求不高,因此可以接受颜色十六进制代码的简化版本,即每种颜色都用一位数字表示,而第二位数字则省略了。

从0到15的任何值都被视为0

从16到31的任何值都被视为1

以此类推...

1 个答案:

答案 0 :(得分:2)

因此您可以使用此代码在24位上输出rgb值

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

如果仅在可以缩短该值的情况下要在12位上输出rgb值

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位编码单色,则0到255之间将有256个值,因此间隔为255个。

如果以4位编码单色,则在0到15之间有16个值,因此有15个间隔。

所以255/15 => 17