我正在尝试将RGB值转换为短十六进制格式,我使用的是长版本:
'#{:02x}{:02x}{:02x}'.format(r, g , b)
是否有可能获得#fff而不是#ffffff而不将值一一格式化以获取第一位数字?
编辑: 我的代码对颜色的准确性要求不高,因此可以接受颜色十六进制代码的简化版本,即每种颜色都用一位数字表示,而第二位数字则省略了。
从0到15的任何值都被视为0
从16到31的任何值都被视为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