メイン コーダーズルーム【スクリプト系】 進数変換について | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
tanakn | Åê¹ÆNo.23076 投稿日時: 2006-1-24 12:13 |
新米 居住地: 東京 投稿: 4
使用環境:
flash mx2004 pro sp2 |
進数変換について 質問させていただきます
マクロメディアのサイト http://www.macromedia.com/jp/devnet/flash/articles/image_api_02.html を見ていて下記のようなコードを発見しました
これで10進数を16進数に変換できるようですが "a<<24 | r<<16 | g<<8 | b" の意味がよくわかりません すみませんがどなたか教えてください よろしくお願いいたします |
野中文雄 | Åê¹ÆNo.23079 投稿日時: 2006-1-24 13:08 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 進数変換について 「10進数を16進数に変換」するというより、RGBの各値を渡して、ひとつのRGBカラー値を計算するものでしょう。<<演算子は、2進法で桁を左にずらす処理になります。|演算子の処理は、いわば繰り上がりのない足し算です。
参考: Flashディスカッショングループ「setRGBで入力する値について」 引用: tanaknさんは書きました: |
森 巧尚 | Åê¹ÆNo.23080 投稿日時: 2006-1-24 13:14 |
モデレータ 居住地: 宝塚 投稿: 650
使用環境:
.5/CS4/Safari3 XP+2000//IE6 |
Re: 進数変換について そのサイトに書いてありますが、この関数はBitmapDataなどのカラー値を扱うのに便利な関数です。アルファ、赤、緑、青 (ARGB) の各値を入れるとそれぞれを適正な16 進数の桁に入れて変換してくれるものです。(単純に10進数を16進数に変換しているのではありません。)
例えば、アルファ:1、赤:2、緑:3、青:4の値を入れてみれば、1020304 (0x01020304)という値が返ってくるのでわかります。(「toString(16)」を使えば16進数に変換して表示されます)
「a<<24」「r<<16」「g<<8」は、ビットシフトの演算子で2進数で指定した値だけ左にシフト(増やし)ます。2進数で4桁シフトすると16倍になるので16進数でいうと1桁、8桁シフトすると16進数で2桁ずらすことになるからです。 間の「|」は論理和、2進数レベルでの足し算で、合計を足してるわけです。 このあたりは、2進数とかビット演算子を勉強するといいでしょう。
|
tanakn | Åê¹ÆNo.23091 投稿日時: 2006-1-24 18:16 |
新米 居住地: 東京 投稿: 4
使用環境:
flash mx2004 pro sp2 |
Re: 進数変換について >野中様
>森様 ご丁寧な御回答ありがとうございます! ビットシフト演算子という物の存在を全く知らず、 <<は比較演算子が2個連続して並んでいる物だと勘違いし、 またビット単位の論理和 (|) と通常の論理和 (||) を混同していました。 時間がかかりましたが、大体理解できました よいことを学びました ありがとうございました |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |