Python中的字符串格式化:将十六进制转换为单个数字的字符串

2024-03-29 09:35:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

有没有可能得到#fff而不是#ffffff,而不逐个格式化值以获取第一个数字?你知道吗

编辑: 我的代码不需要太多的颜色精度,所以它接受一个缩短版本的颜色十六进制代码,即每个颜色由一个数字表示,第二个数字被省略。你知道吗

0到15之间的任何值都被认为是0

16到31之间的任何值都被认为是1

等等。。。你知道吗


Tags: 代码版本format编辑fff颜色格式精度
1条回答
网友
1楼 · 发布于 2024-03-29 09:35:09

所以你有这个代码来输出一个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位编码一个单色颜色,你有256个介于0和255之间的值,所以你有255个间隔。你知道吗

如果你用4位编码一个单色颜色,你有16个介于0和15之间的值,所以你有15个间隔。你知道吗

所以255/15=>;17

相关问题 更多 >