2012-08-06 42 views
2

我想弄清楚如何將RGB轉換爲ARGB內聯。如果我把結果放到一個uint中,它可以工作,但是如果我直接使用這個值,它就會像int一樣對待它,即使所有的值都是uint。我堅持一個額外的任務?從AS中的位運算符得到「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

你試過uint((alpha << 24)).toString(16));

0

這沒有幫助。你只是將結果解釋爲uint,但是AS執行移位爲int。

試試這個

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

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

所有你需要的是使用usigned按位移位運算符,像這樣:

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