Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将0到16581375之间的数字转换为RGBin python_Python_Pygame_Rgb - Fatal编程技术网

将0到16581375之间的数字转换为RGBin python

将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

如果给定一个介于0和16581375
(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给出的值。