RGBを16進数の数値で指定するために必要な知識
プログラムやWebページのスタイルから24ビットカラー(RGBで指定するフルカラー)を指定するときの記述で,16進数での指定方法があります。16進法というルールで表された16進数がどのようなものか見てみましょう。
10進法と10進数
ふだん私たちが使用する数は,0から9の10種類の数字を用いて表しています。そのルールのことを「10進法」とよび,10進法で表された数のことを「10進数」とよびます。
0を基準にして1ずつ足していくと,表記は次のようになります。
0+1=1
1+1=2
2+1=3
3+1=4
4+1=5
5+1=6
6+1=7
7+1=8
8+1=9
9+1=? ← ここで1桁では数を表しきれなくなりました。
1桁目の「1の位」で表せなくなったら「10の位」を使います。9 の次は 10 となります。
99の次はまた桁が増えて100です。
2進法と2進数
10進法で10種類の数字を用いたように,2進法は2種類の数字で数を表します。(0と1の二種類ということです)
0を基準にして1ずつ足していくと,表記は次のようになります。
0+1= 1
1+1= ? ← もうここで1桁では数を表しきれません。2の位を使います。
1+1=10 ・・・10進法では,2
10+1=11 ・・・10進法では,3
11+1=?? ← また桁がふえます。4の位を使って「100」となります。
2進法ではどんどん桁が多くなって,人が見ると扱いにくいのですが,コンピュータは「オン/オフ」の2つの状態で表せる2進法で情報を処理しています。
16進法と16進数
同様に16進法では16種類のもので1桁を記述します。数字の 0 ~ 9 とアルファベットの A ~ F の16種類を使います。
0+1= 1
1+1= 2
・・・
9+1= A ・・・10進法では,10
A+1= B ・・・10進法では,11
B+1= C ・・・10進法では,12
C+1= D ・・・10進法では,13
D+1= E ・・・10進法では,14
E+1= F ・・・10進法では,15
F+1=10 ← ここで桁が増える。
プログラミング言語 Python では,16進数であることを示すとき数字に 0x (ゼロエックス) をつけます。10進法での 10 を 16進法では 0xA というように記述します。(大文字小文字はどちらでもよい。また0x0Aのように0を埋めて記述してもよい)
Pythonでの例
a = 10 b = 0xA print(a+b) print(0x10) print( hex(255) )
実行結果
20
16
0xff
・hex(x) は整数xを受け取り0x付きの16進文字列を返すPythonの組み込み関数です。
ビットとバイト
「ビット」という情報の量を表現する単位があります。
1ビットは0,1の2通りの情報を表せます。(2の1乗通り)
2ビットは00,01,10,11の4通りの情報を表せます。(2の2乗通り)
8ビットは2の8乗通り( 256 )の情報を表せます。
8ビットを1まとまりにしたものを「1バイト」とよびます。1バイトあれば 0~255の数を表せることになります。
記事冒頭の24ビットカラーは,2の24乗の約1678万色を表現できる仕組みです。
RGBの組み合わせ
この記事を表示している画面(ディスプレイ)はデジタル画像のデータを赤(R)・緑(G)・青(B)の光に変えることで色を表現しています。(※1)
この3つの強弱を数値で表すのがRGBカラーで,アプリケーションによっては10進数で(255,255,123)のように表現することもあります。
Pyxelを含むいくつかのPythonライブラリでは,色指定に16進数の数値を使用でき,プログラムを作成する人にとって扱いやすい面があります。
RGBがそれぞれ1バイト(0~255 → 0x00~0xFF)なので,0x000000~0xFFFFFF の2桁ずつR・G・Bの値になります。
赤 0xFF0000
緑 0x008000 lime 0x00FF00
青 0x0000FF
紫 0x800080 fuchsia 0xFF00FF
黒 0x000000
白 0xFFFFFF
(※1 ディスプレイの設定により色の表示は異なります)
ツール類
RGBカラーコード等でWebを検索すれば,たくさんの参考サイトが見つかると思います。
Webページを作成するHTML+CSSの情報ページですが,下記サイトなどで16進数の値を調べられます。
色選択ツール - CSS: カスケーディングスタイルシート | MDN
(CSSでは#をつけて16進数であることを示しています。Pyxelのパレットファイルでは#不要)
下記のページではWebで使用される色の名称などを見ることができます。
<color> - CSS: カスケーディングスタイルシート | MDN