color='#FFFFFF';
var colorVal = parseInt(color.slice(1), 16);
result = {
red: colorVal >> 16 & 0xFF,
green: colorVal >> 8 & 0xFF,
blue: colorVal & 0xFF,
}
//{red:255,green:255,blue:255}
了解到>>有符號右移,為什麼要parseInt(,16)。 >>不是對二進位資料做右移嗎。 。那麼parseInt無論轉成多少進位。二進位資料都應該不變啊。
為什麼是移動16位元。 。 'FFFFFF'不是6bytes 48bit嗎。 。
parseInt('hexStr', 16) 這句話的意思是把包含十六進位數字的字串以解析十六進位的方式轉換成Int數值類型,只有數值類型才能移位操作
'FFFFFF' 只是個字串,右移運算需要數字。
以 'FFFFFF' 為例,低於16進位不存在F,所以是 NaN,高於16進位進位不一樣所以也是不同的值。
RGB 每個顏色值為 0~255,即佔 8 位元。取得 R 值就右移 16 位元去掉 G 和 B