因此,我正在寻找如何获得一个RGB颜色列表,这取决于要检索的颜色总数,我找到了这段代码。还有一部分我无法理解,我已经读过注释中“>;”和“&;”运算符是位运算符,但我无法完全理解它们在做什么。在
谁能帮我理解颜色的价值所在吗 是否已分配?在
def getDinstinctRGBColorsList(desiredColors)
availableColors = 16000000
inc = availableColors/desiredColors
colorsList = {}
RGB = 0
count = 0
while count <= desiredColors:
RGB = RGB+inc
colorBlue = RGB & 255
colorGreen = (RGB >> 8) & 255
colorRed = (RGB >> 16) & 255
colorsList[count] = str(colorRed) + "," + str(colorGreen) + "," + str(colorBlue)
count += 1
return colorsList
请参见BitwiseOperators和What are bitwise shift (bit-shift) operators and how do they work?。在
从您发布的代码来看,
RGB
包含24位颜色信息:8位代表红色,8位代表绿色,8位代表蓝色,红色数据在最左边8位,绿色数据在中间8位,蓝色数据在最右边8位。在假设
RGB
的位看起来像0brrrrrrrrggggggggbbbbbbbb
,其中r
是红色值的一个位,g
是绿色值的一个位,b
是蓝色值的一个位。在注意二进制中的
255
是0b11111111
(8个设置位)。在colorGreen = (RGB >> 8) & 255
正在使用>>
(右移)和{0brrrrrrrrggggggggbbbbbbbb >> 8
产生{注意绿色的位现在是最左边的8位。然而,红色的部分仍然存在。在
{{cd15}
注意只剩下绿色的部分。在
编辑:这是一个简化。在Python中,
>>
是算术移位,而不是逻辑移位。算术移位保留符号。请参见What are bitwise shift (bit-shift) operators and how do they work?以获得更详细的解释。在相关问题 更多 >
编程相关推荐