2014-09-01 45 views
-1

有沒有什麼辦法可以給出0到16581375 (255*255*255)之間的數字到RGB值 - 比如(0,0,0)和16581375的0作爲(255,255,255)將0到16581375的數字轉換爲RGBin python

顯然,除此之外,還有一些因素,比如他對RGB值的排序以及它們本身的不同因素。

我問這個問題的原因是因爲爲了獲得更高分辨率的數學結構,我需要更多的顏色(而不是僅僅255灰色陰影)。

那麼,有什麼辦法可以做到這一點?

+0

你的意思是16777216(256 * 256 * 256)? – falsetru 2014-09-01 13:54:03

+0

你現在的問題是什麼?你想做一個隨機的'rgb'值嗎? – Kasramvd 2014-09-01 13:54:48

+0

在回答上述問題時,沒有。考慮pygame只能達到(255,255,255)? – user2592835 2014-09-01 13:57:20

回答

0

不是很性感,但...

...給你的樣品值:

>>> n = 16581375 
>>> h = "{:06X}".format(n) 
>>> (int(h[0:2],16),int(h[2:4],16),int(h[4:6],16)) 
(253, 2, 255) 

的分鐘:

>>> 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) 
+0

如果'n'爲0會怎麼樣?你最好使用'format(n,'06x')'來確保0填充。 – falsetru 2014-09-01 13:59:27

+0

@falsetru使用正確的'format()'固定:/ ...我被16581375不返回(255,255,255)困擾。但實際的最大值是256 * 256 * 256-1 == 16777215,而不是OP給出的值。 – 2014-09-01 14:03:41