我的问题是转换带有alpha值的十六进制颜色字符串,并获得四个通道R G B A. 字符串的长度为8(例如:4faabbaa)
我尝试使用以下代码(使用按位运算符)来转换字符串并获取rgba。
var hex = "4faabbaa"; //In this case R is correct (79)
var hexint = parseInt(hex, 16);
var r = hexint >> 24;
var g = (hexint & 0x00FF0000) >> 16;
var b = (hexint & 0x0000FF00) >> 8;
var a = hexint & 0x000000FF;
该代码适用于G B和A通道的所有值,但对于某些R值,则返回负值。
例如,如果我使用:
var hex = "ccaabbaa"; //In this case returns a negative R (-52)
返回R
的负值为什么?
答案 0 :(得分:0)
对于遇到此问题的任何人:解决方案是使用>>>
而不是>>
,因为位0x80000000将负号存储在32位带符号整数值中。