32ビットカラーを表現するのにunsigned intで0xff112233とすることがある。この値から各RGBAの値を取得するには、右ビットシフトした後、論理積ANDを取れば良い。
たとえば、ActionScript3では32ビットカラーの値は0xAARRGGBBというようにアルファ、赤、緑、青の順に並んでいる。ここから青の値を取るには0xffとANDを取る。緑は8ビットシフトさせてから。赤は16ビットシフトさせてから。アルファは24ビットシフトさせてからとなる。
var color:uint = 0xff112233; var alpha:uint = color >> 24 & 0xff; var red:uint = color >> 16 & 0xff; var green:uint = color >> 8 & 0xff; var blue:uint = color & 0xff;
アルファを取得するときにはちょっと注意が必要。アルファよりも左には値が無いのだから0xffとANDを取る必要が無いと思うが、>>演算子は符号を保持したまま右ビットシフトを行うため、アルファの値が0x80以上の場合は空いたビットに1が入ってしまう。そのため0xffとANDを取る必要が出てくる。あるいは空いたビットに0が入る>>>演算子を使えば良い。
var color:uint = 0xff000000; var alpha:uint = color >>> 24;