質問: **このページは、何をやっているのでしょうか?** ・RGB はintに変換できるのでしょうか? --- **RGB(255,128,15)** ・10進数 **#FF800F** ・16進数の文字列? **FF800F** ・16進数 **0×FF800F** ・16進数? **16744463** ・RGB int ・何進数?
回答: RGBは光の色の三原色である、赤、緑、青、それぞれの明るさの組で色を表現する形式です。 デジカメの画像や、地デジテレビの画像などでは、三原色の明るさが整数で表現されます。 質問にある 「RGB(255,128,15) 」は、赤、緑、青の明るさが、それぞれ255,128,15である色を表現しています。(「3つの10進数の組で赤、緑、青の明るさを表現した形式」であって、「10進数」ではありません) それぞれの色の明るさを、0~255(8ビットの2進数で表現できる範囲)で表すとして、上から8ビットずつを赤、緑、青の明るさを表すのに使うことにすると、24ビットの2進数で色を表すことができます。 このように、1つの整数(Integer)値でRGB3色の明るさの値(一つの色)を表現する形式が一般的にRGB Int と呼ばれます。 昔にパソコン(PC-8001等)の画面は、3ビットRGB Int(RGBがそれぞれ1ビット)で、8色が使えました。 現在の多くのデジカメや地デジテレビで使われているのは、24ビットRGB Intで、約1600万色が表現できます。 質問の2つ目以降の表現は、次のように成っています。 RGB(255,128,15)を24ビット2進数で表現したものを、16進数で表せば FF800F 、10進数で表せば 16744463 となります。 "#" は、number signと呼ばれる記号で、数値であることを意味します。 0xは、javaなどのプログラミング言語で、16進数の値が後に続くことを意味します。 最後に、「・RGB はintに変換できるのでしょうか?」に対する答えですが、 intをデータの表現形式(ビットの並び)と考えるのであれば、上で説明したように変換できます(対応付けが可能です)。 intを数学的な整数と考えるのであれば、RGBの値を表現することは不可能です。16744463の7は、70万という数字を表しているのであって、RGBを構成する数値の一部を表現している訳ではありません。 このあたりの区別をあいまいにすると、「RGB Intで表現された値に2を掛ければ、明るさが2倍になるだろう」というような理解不能なコードを生むことになります。