Python 我的RGB给了我“-”

Python 我的RGB给了我“-”,python,colors,hex,rgb,Python,Colors,Hex,Rgb,我正在尝试将我的RGB颜色转换为十六进制,当我使用 颜色=%02x%02x%02x%r、g、b 它有时给我十六进制代码,里面有-。有没有办法解决这个问题?在这种情况下,这是因为r、g、b中的一个是负数:事实上,破折号是一元运算符,可能更被称为负数符号。如果在格式字符串中添加逗号和空格,这一点会更加清楚: >>> "#%02x%02x%02x" % (0, -213, 468) '#00-d51d4' >>> "%02x, %02x, %02x" % (0, -

我正在尝试将我的RGB颜色转换为十六进制,当我使用 颜色=%02x%02x%02x%r、g、b
它有时给我十六进制代码,里面有-。有没有办法解决这个问题?

在这种情况下,这是因为r、g、b中的一个是负数:事实上,破折号是一元运算符,可能更被称为负数符号。如果在格式字符串中添加逗号和空格,这一点会更加清楚:

>>> "#%02x%02x%02x" % (0, -213, 468)
'#00-d51d4'
>>> "%02x, %02x, %02x" % (0, -213, 468)
'00, -d5, 1d4'

除了负数,还有大于255的数字。请注意,这些都不是有效的RGB值。

是什么r/g/b值导致了这种情况?需要更多信息。你什么时候会得到带有-的代码?尝试添加一些类似if-in-color的内容:打印r、g、b;进口pdb;pdb.set_跟踪;要更好地了解正在发生的事情,请访问您的代码。如果没有看到代码示例,我们只能猜测原因。也就是说,我能想到的一种情况是,当r,g,b中的一个或多个为负值时。Blacklight我认为你是对的,但我不确定它们是如何变成负值的。该指数的数值为0-2875420-2134680-52600-197450-813360-272820-1454000-903450-16271