在Javascript中将rgba值转换为一个整数

ske*_*rit 14 javascript boolean-logic bit-manipulation

我已经可以将32位整数转换为它们的rgba值,如下所示:

pixelData[i] = {
        red: pixelValue >> 24 & 0xFF,
        green: pixelValue >> 16 & 0xFF,
        blue: pixelValue >> 8 & 0xFF,
        alpha: pixelValue & 0xFF
    };
Run Code Online (Sandbox Code Playgroud)

但我真的不知道如何扭转它.

Mig*_*ork 16

要反转它,您只需将字节组合成一个整数.只需使用左移并添加它们即可.

var rgb = (red << 24) + (green << 16) + (blue << 8) + (alpha);
Run Code Online (Sandbox Code Playgroud)

或者,为了使其更安全,您可以首先使用0xFF和每个它们:

var r = red & 0xFF;
var g = green & 0xFF;
var b = blue & 0xFF;
var a = alpha & 0xFF;

var rgb = (r << 24) + (g << 16) + (b << 8) + (a);
Run Code Online (Sandbox Code Playgroud)

(您可以使用按位OR |而不是+此处,结果将是相同的).

  • JS 按位运算符获取并返回 32 位有符号整数,因此 255 &lt;&lt; 24 变为 -16777216,r 部分应该是 (r * (2 ** 24)),并且不能使用 | 而不是 + (4认同)
  • 可以使用 `&gt;&gt;&gt; 0` 来获取有符号整数,即: `255 &lt;&lt; 24 &gt;&gt;&gt; 0` = 4278190080 (4认同)