这种颜色功能如何工作?

时间:2015-01-28 00:10:28

标签: javascript colors bit-manipulation

我遇到了这个返回一些颜色值的小函数。我无法理解它正在做的位操作。

//Given a color, returns the ARGB values of that color in an array
var getColor = function(color){
    return [color >> 24&255, color >> 16&255,
    color >> 8&255, color&255];
};

1 个答案:

答案 0 :(得分:3)

它采用32位值并将其切成8位数。 >>运算符是右移运算符,因此进入数组的第一件事是高8位(32-8为24)。

每个移位的值与255(十六进制0xff)进行AND运算,以隔离低8位(移位后)。

因此,如果您从4AE109B0开始,该函数将:

  • 向右移动24,隔离4A
  • 向右移动16,隔离E1
  • 向右移动8,隔离09
  • 最后将原始低8位隔离以获得B0

结果将是数组

[0x4A, 0xE1, 0x09, 0xB0]

就个人而言,我会将移位和掩码操作括起来,因为我永远不会记住运算符的优先级:

function getColor(color){
    return [
      (color >> 24) & 255,
      (color >> 16) & 255,
      (color >> 8) & 255,
      color & 255
    ];
};