搜尋

首頁  >  問答  >  主體

javascript - 求解下面這段程式碼。 。怎麼理解?

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嗎。 。

大家讲道理大家讲道理2817 天前477

全部回覆(2)我來回復

  • ringa_lee

    ringa_lee2017-05-19 10:17:40

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

    回覆
    0
  • PHP中文网

    PHP中文网2017-05-19 10:17:40

    為什麼要parseInt(,16)

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

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

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

    為什麼是移動16位

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

    回覆
    0
  • 取消回覆