javascript - 求解下面這段程式碼。 。怎麼理解?
大家讲道理
大家讲道理 2017-05-19 10:15:40
0
2
454
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嗎。 。

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回覆(2)
左手右手慢动作

parseInt('hexStr', 16) 這句話的意思是把包含十六進位數字的字串以解析十六進位的方式轉換成Int數值類型,只有數值類型才能移位操作

Ty80

為什麼要parseInt(,16)

'FFFFFF' 只是個字串,右移運算需要數字。

那麼parseInt無論轉成多少進位。二進位資料都應該不變啊。

以 'FFFFFF' 為例,低於16進位不存在F,所以是 NaN,高於16進位進位不一樣所以也是不同的值。

為什麼是移動16位

RGB 每個顏色值為 0~255,即佔 8 位元。取得 R 值就右移 16 位元去掉 G 和 B

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板