トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     進数変換について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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
を見ていて下記のようなコードを発見しました


function argbtohex(a:Number, r:Number, g:Number, b:Number)
{
return (a<<24 | r<<16 | g<<8 | b)
}


これで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さんは書きました:
これで10進数を16進数に変換できるようですが
"a<<24 | r<<16 | g<<8 | b"
の意味がよくわかりません
すみませんがどなたか教えてください
よろしくお願いいたします


----------------
 

森 巧尚
Åê¹Æ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進数に変換して表示されます)
trace(argbtohex(1,2,3,4).toString(16));
1020304


「a<<24」「r<<16」「g<<8」は、ビットシフトの演算子で2進数で指定した値だけ左にシフト(増やし)ます。2進数で4桁シフトすると16倍になるので16進数でいうと1桁、8桁シフトすると16進数で2桁ずらすことになるからです。
間の「|」は論理和、2進数レベルでの足し算で、合計を足してるわけです。

このあたりは、2進数とかビット演算子を勉強するといいでしょう。


----------------
森 巧尚
http://www.ymori.com

tanakn
Åê¹ÆNo.23091
投稿日時: 2006-1-24 18:16
新米
居住地: 東京
投稿: 4
使用環境:
flash mx2004 pro sp2
Re: 進数変換について
>野中様
>森様

ご丁寧な御回答ありがとうございます!
ビットシフト演算子という物の存在を全く知らず、
<<は比較演算子が2個連続して並んでいる物だと勘違いし、
またビット単位の論理和 (|) と通常の論理和 (||) を混同していました。
時間がかかりましたが、大体理解できました
よいことを学びました
ありがとうございました
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops