2017-07-21 20 views
0

式の作成にRGB数はこれです:私は、元の3つの変数の値にこの値を変換するにはどうすればよい8017035この整数を元の値に分割する方法は?

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

これは次のようになり?

代わりに、乗算のこのコード

+1

これは、#define COLOR(r、g、b)((((b)&0xff)<< 16)+(((g)& 0xff)<< 8)+((r)&0xff)) –

+0

@MichaëlRoyなぜマクロですか? – LogicStuff

+0

@LogicStuffこれは、マクロがこれらの小さなコメントセクションで読みやすくなるからです。 –

答えて

1

を丸めるだろうかです。

Rを見つけるには、残りは、あなたは、1000000を法Rを減算し、1000で除算モジュロBの値を削除し、次に可能性が、Gを見つけるに

R.

なり1000を法として可能性(すでに発見した)Rを減算してBを見つけるために* 1000

だけGを残すであろう、あなたはRとGを減算することができ、次にこれはあなたに正しい結果を与える1000000

で割ますR、G、Bが100の場合CoryKramerによる現在のトップアンサーはループし、100であっても0であったことを伝えます。

+0

それは正しいです、前のCoryKramerの答えは100の値を考慮に入れません。 – Sam

5

まったく同じ方法が、モジュラスを実行するために使用し、esp8266

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

For example、ここでの値はこれを行うには、いくつかの方法があります旅行

+0

うわー、 ご返信ありがとうございました!あなたのコードは完璧に動作します。私はそれがこの単純だったことを知らなかった。 ありがとう! – Sam

関連する問題