【问题标题】:How does this color function work?这个颜色函数是如何工作的?
【发布时间】:2015-01-28 00:10:28
【问题描述】:

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

//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];
};

【问题讨论】:

    标签: javascript colors bit-manipulation


    【解决方案1】:

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

    每个移位值都与 255(十六进制 0xff)进行“与”运算,以仅隔离低 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
        ];
    };
    

    【讨论】:

    • 很好解释。如果我理解正确,这个函数的想法是让你传入一个 32 位的颜色值,并在一个不错的数组中获取分离的 ARGB 颜色通道?
    • @Revoo 正好!当然,该函数不知道它是 ARGB 还是 RGBA 还是 GRAB 或任何东西;它只是传递字节。
    猜你喜欢
    • 1970-01-01
    • 2018-07-17
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多