为什么我不能使用<<将0xff0000转换为0xff000000 2?

时间:2016-04-23 02:03:26

标签: javascript bit-shift

这实际上只是将FF两位向左移动?出于某种原因,在javascript中执行此操作我得到0x3fc0000

我要做的是将十六进制颜色与alpha通道遮罩组合

即。 alpha = 0xff /完全不透明度

color = 0x00ff00

结果= 0xff00ff00

2 个答案:

答案 0 :(得分:1)

f是4位(二进制为1111)。两个十六进制数字(0xff)是8位。所以你需要移动8来移动两个十六进制位置。

答案 1 :(得分:0)

你需要将它移动两位以上的2位。如果你想转移它们,你需要使用

color << 8;

在js小提琴中尝试以下内容

var color = 0x00ff00;
alert(color.toString(16));
color = color << 8;
alert(color.toString(16));
color = color | 0xff;
alert(color.toString(16));
console.log(color);