2017-07-21 20 views
0

用於創建RGB數字的公式是這樣的:如何將此整數分解爲其原始值?

R (value between 0-100) + G (value between 0-100) * 1000 + B (value between 0-100) * 1000000 

這導致類似:8017035

我怎麼能轉換這個值恢復到原來的3個變量的值?

使用和esp8266運行這段代碼

+1

現在你明白了爲什麼我們通常爲每個顏色值使用8位,如'#define COLOR(r,g,b)((((b)&0xff)<< 16)+(((g)& 0xff)<< 8)+((r)&0xff))' –

+0

@MichaëlRoy爲什麼宏,但? – LogicStuff

+0

@LogicStuff這是因爲宏在這些小注釋部分中讀起來更容易一些。 –

回答

1

有幾個方法可以做到這一點。

爲了找到R,你可以模1000的其餘部分將是R.

爲了找到G,你可以模百萬,減去R,並通過1000除以模數將刪除B值,然後減去R(你已經發現了),你會留下剛剛G * 1000

要找到B,你可以減去R和G,然後由1000000

劃分這會給你正確的結果在R,G或B爲100的情況下.CoryKramer當前的最佳答案將會循環並告訴你該數字爲0,即使它是100也是如此。

+0

這是正確的,CoryKramer先前的回答沒有考慮到100個值。 – Sam

5

方式不盡相同,但模量,而不是乘法。

int color = 8017035; 
int r = color % 100; 
int g = (color/1000) % 100; 
int b = (color/1000000) % 100; 

For example,這裏的值將如何往返

+0

哇, 非常感謝您的快速回復!您的代碼完美無缺。我不知道這是如此簡單。 謝謝! – Sam

相關問題