将0到16581375之间的数字转换为RGBin python
如果给定一个介于0和16581375将0到16581375之间的数字转换为RGBin python,python,pygame,rgb,Python,Pygame,Rgb,如果给定一个介于0和16581375(255*255*255)之间的数字,是否有任何方式将其转换为RGB值,例如0在(0,0,0)处,16581375作为(255255255) 显然,除此之外,还有一些因素,例如RGB值的顺序,以及不同的因素本身 我问这个问题的原因是为了获得更高的数学结构分辨率,我需要更多的颜色(而不仅仅是255个灰度) 那么,我有什么办法可以做到这一点吗?不是很性感,但是 。。。鉴于您的样本值: >>> n = 16581375 >>> h
(255*255*255)
之间的数字,是否有任何方式将其转换为RGB值,例如0在(0,0,0)
处,16581375作为(255255255)
显然,除此之外,还有一些因素,例如RGB值的顺序,以及不同的因素本身
我问这个问题的原因是为了获得更高的数学结构分辨率,我需要更多的颜色(而不仅仅是255个灰度)
那么,我有什么办法可以做到这一点吗?不是很性感,但是
。。。鉴于您的样本值:
>>> n = 16581375
>>> h = "{:06X}".format(n)
>>> (int(h[0:2],16),int(h[2:4],16),int(h[4:6],16))
(253, 2, 255)
min:
>>> n = 0
>>> h = "{:06X}".format(n)
>>> (int(h[0:2],16),int(h[2:4],16),int(h[4:6],16))
(0, 0, 0)
最大值:
>>> n = 256*256*256-1
>>> h = "{:06X}".format(n)
>>> (int(h[0:2],16),int(h[2:4],16),int(h[4:6],16))
(255, 255, 255)
对于数学上倾向于:
>>> n = 16581375
>>> (n//(256*256), n//256%256, n%256)
(253, 2, 255)
>>> n = 16581375
>>> (n >> 16, (n >> 8) & 0xFF, n & 0xFF)
(253, 2, 255)
对于有逻辑倾向的人:
>>> n = 16581375
>>> (n//(256*256), n//256%256, n%256)
(253, 2, 255)
>>> n = 16581375
>>> (n >> 16, (n >> 8) & 0xFF, n & 0xFF)
(253, 2, 255)
你的意思是16777216(256*256*256)?你现在有什么问题?你想做一个随机的
rgb
值吗?回答上面的问题,没有。考虑到pygame只会上升到(255255)?和jonrsharpe:我不确定。有没有办法修复系统-因此组合从低到高?@user2592835你需要解释如何从单个值获得rgb。很明显,value=R*G*B
但是如何划分它们呢?如果n
为0呢?您最好使用类似于format(n,'06x')
的方法来确保0填充。@falsetru使用正确的format()
修复了以下问题:/。。。16581375没有回来(255255),这让我很烦恼。但实际最大值是256*256*256-1==16777215,而不是OP给出的值。