Javascript int32到十六进制字符串不工作。。打字稿

Javascript int32到十六进制字符串不工作。。打字稿,javascript,typescript,int,hex,data-conversion,Javascript,Typescript,Int,Hex,Data Conversion,我有一个包含rgba值的int32,其编码方式如下: values = [255, 255, 255, 255]; this.colorInt = ( values[0] << 24 ) | ( values[1] << 16 ) | ( values[2] << 8 ) | values[3]; 我想得到这个:#FFFFFFFF但是我得到了这个:-1我已经看过很多关于这个的stackoverflow帖子,但是我无法让它工作 我做错了什么?颜色由3种颜色(R

我有一个包含rgba值的int32,其编码方式如下:

values = [255, 255, 255, 255];
this.colorInt = ( values[0] << 24 ) | ( values[1] << 16 ) | ( values[2] << 8 ) | values[3];
我想得到这个:
#FFFFFFFF
但是我得到了这个:
-1
我已经看过很多关于这个的stackoverflow帖子,但是我无法让它工作


我做错了什么?

颜色由3种颜色(RGB)表示,为了引入alpha变量,您的案例不起作用

这是你的代码

const value=[255,255,255];

const colorInt=(值[1]这是因为整数 -1(基数10)=11111111111111(基数2)

如果您使用位运算符,您将看到这个问题,因为它只处理32位整数

其他运算符,如乘法,也会处理这个问题。因为它们不是位运算符,所以它们的计算不限于32位整数。 您可以使用以下命令

this.colorInt = 255 + (255 * 2**8) + (255 * 2**16) + (255*2**24)
this.colorInt.toString(16) // "ffffffff"
否则,我认为更具可读性的方法是

function hexer(a,b,c,d){
    return ([a,b,c,d].map(x=>x.toString(16)).join(''))
}
hexer([255,255,255,255]) // "ffffffff"

颜色代码有三个十六进制数字,我不知道是4,但它仍然应该和4一起工作,对吗?我可以问一下,当你把alpha添加到混合中时,为什么它会停止工作?如果你添加了字符串(24),为什么它也不工作?
function hexer(a,b,c,d){
    return ([a,b,c,d].map(x=>x.toString(16)).join(''))
}
hexer([255,255,255,255]) // "ffffffff"