將普通的數字轉為color值,java和javascript的區別

洪小燈發表於2015-12-08

最近的一個需求是這樣的,前段可以動態配置資料顏色儲存起來,在展示的時候再將color讀出來,但是儲存的時候儲存的是數字,例如:

16776960、16776980等等這樣的數字,在java中將這些數字轉為Color值還是很方便的,

程式碼如下:

		Color c = new Color(16776960);
		System.out.println("ss:"+"#" + Integer.toHexString(c.getRGB()).toString().substring(2));

這個時候得到的就是一個類似:#AAAAAA這樣的一個字串,這樣這個時候就比較好用了,

但是最近使用nodejs來做這件事的時候,發現不是這樣的

js程式碼:

var value = parseInt(-16776960);
var val = 0xff000000 | value;
val = val.toString(16).substring(1);
var str = '';
//當返回的顏色值沒有達到六位時
if (val.length < 6) {
    var i = 6 - val.length;
    for (var t = 0; t < i; t++) {
        str += '0';
    }
}
console.log('color:' + '#' + str + val);

現在這兩段程式碼的結果是一樣的,在java中在使用new Color(16776960)這個構造方法的時候執行:value = 0xff000000 | rgb;

所以在js中我也使用了這個方法,但是java在構造Color物件的時候做了處理是,所以在js中要使用對應的數字的相反數,這個時候獲取的color字串就是

一樣的了。

相關文章