[英]strip hex to a single digit in string formating in python
我正在尝试将RGB值转换为短十六进制格式,我使用的是长版本:
'#{:02x}{:02x}{:02x}'.format(r, g , b)
是否有可能获得#fff而不是#ffffff而不将值一一格式化为第一个数字?
编辑:我的代码对颜色的准确性要求不高,因此它接受彩色十六进制代码的简化版本,每种颜色用一位数字表示,第二位数字省略。
从0到15的任何值都被视为0
从16到31的任何值都被视为1
等等...
所以你有这段代码可以输出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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.