从AS中的按位运算符获得“uint”结果?

时间:2012-08-06 06:55:28

标签: actionscript-3 bit-manipulation

我试图找出如何将RGB转换为ARGB内联。如果我将结果放入uint中,它就可以工作,但如果我尝试直接使用该值,它会将其视为int,即使所有值都是uint。我是否还有额外的任务?

var test:uint = 0xCCCCCC |  (0xFF << 24);
trace(test.toString(16));
//ffcccccc

var rgb:uint = 0xCCCCCC;
var alpha:uint = 0xFF;
trace((rgb | (alpha << 24)).toString(16))
//-333334

2 个答案:

答案 0 :(得分:2)

你试过uint((alpha << 24)).toString(16));吗?

答案 1 :(得分:0)

这无济于事。您只需将结果解释为uint,但AS执行转换为int。

试试这个

trace(2147483648 >> 1); // -1073741824

trace(uint(2147483648 >> 1)); // 3221225472

您只需要使用带符号的按位移位运算符,如下所示:

trace(2147483648 >>> 1); // 1073741824