- ベストアンサー
「0x00ff0000」?
多分ものすごく基本のことだと思うのですが、質問させてください…。 タイトルにもあるとおり、プログラムを勉強していたら画像処理のところで「0x00ff0000」などのような記述が出てきたのですが、これはどう読めばいいのでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
『ゼロエックスゼロゼロエフエフゼロゼロゼロゼロ』ってことですか? 意味的には C言語などで使われる16進数表記です 0-9とA-Fまでの組み合わせで1桁で0から15までをカウントできます 0x0Aが10 0x0Fが15 0x10が16 0x100が256 といった具合です 画像処理なら RGBなどのデータをひとまとめに扱う際に 赤だけのデータが欲しいとか 緑だけのデータが欲しい などの欲求があると思います その際に マスクを掛けて希望のデータなどを取り出すためにご質問のようなデータを使います
その他の回答 (2)
(蛇足?) 参考URLは、RGBの並びです。 ちなみに、BorlandC++Builderは、BGRの並びで指定します。 (最上位8bit(16進2桁)の使用経験はありませんが、・・・意味があるようです。Help"TColor型")
- 参考URL:
- http://www.colordic.org/
お礼
回答ありがとうございます。 URL、参考にします。
- sahara4
- ベストアンサー率53% (14/26)
0x00ff0000は、C言語の16進表記ですね。 VBでは、&H00FF0000と表記します。 10進数に変換すると16711680。 0xff(16進)=255(10進)なので、255×256×256と計算すれば、筆算でも変換できます。 16進数は1桁が4bit、2桁で8bitを表す事も意識して、使い分けると良いでしょう。 情報処理技術者試験に出た時は、こうして変換してください。 ところで、画像処理との事なので、RGB(Red,Green,Blue)の画素の表記じゃないでしょうか? RGBの3色を各色8bitで表すと、10進表記で0~255の256階調になります。 16進表記では、0x00~0xff。 0x00ff0000は、2桁づつに区切って、R=0xff(256)、G=0x00(0)、B=0x00(0)の事だと思います。 8bit×3色で、24bitあれば1画素が表現できるのですが、C言語でlong型は32bitなので、最上位の8bit(16進2桁)は無駄になります。 でも、画像処理演算の時には、扱いやすくするためにこうして32bitに合わせています。 蛇足ですが、ファイルに格納する場合などは、ファイルサイズを小さくするために24bitの形にして詰め込んで、無駄な8bitは作らないようにします。
お礼
とても丁寧な回答ありがとうございます。 質問する時点で、書いておけばよかったのですが、勉強している言語はjavaでその中で int bgColor = 0xff000000; という使い方でint型で使われています。。。 画像処理なのでRGBの表記だと思うのですが、最初の宣言は0xff000000というように左端4桁が質問文で記したの(0x00...)と違って0xff...なのですが、これはどういうことを示すのでしょうか?
お礼
ありがとうございます。 一応javaを勉強していて出てきたのですが、まぁ一緒…ですよね?