2013-03-27 59 views
1

我怎麼能轉換int類型爲8位十六進制十進制在柔性轉換一個有符號整數,以8位十六進制的柔性

我需要在C#[的ToString(「X8」)的功能similiar。這個函數在c#中完成這項工作。 但flex中的選項是什麼?

+0

可能重複[如何在Actionscript3中將十六進制轉換爲十進制?](http://stackoverflow.com/questions/14659322/how-to-convert-hex-to-decimal-in-actionscript3) – CyanAngel 2014-11-03 10:57:45

回答

4

如文檔所描述的,這幾乎是相同的:

var myInt:int = 255; 
var hex:String = myInt.toString(16); 
trace(hex); //outputs "ff" 

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/int.html#toString()
如果這是你的顏色後:該文檔描述瞭如何處理這種情況了。


然而,沒有內置的方式來添加前導零。您可以使用的方法是這樣一做就是:

public function pad(s:String, pattern:String="0", minChars:int=8):String { 
    while (s.length < minChars) s = pattern + s; 
    return s; 
} 

trace(pad(hex)); //000000ff 
+0

如果int值爲131075,if我使用了上面的函數轉爲20003.但根據c#函數它是00020003。這種類型的8位數結果,我想... – Nithil 2013-03-27 13:11:46

+0

@Nithil編輯一個解決方案。 – RIAstar 2013-03-27 14:27:55

+0

感謝您的回答 – Nithil 2013-03-28 04:59:28

1

注:這是6種十六進制顏色,但可以很容易地進行修改,以任何數量的十六進制數字。

找到很多輸出十分依賴字符串填充的填充十六進制值的方法。

我對任何這些都不滿意,所以這就是我想到的:(作爲獎勵,它適合於一行)你甚至可以通過刪除toUpperCase()調用來縮短它,因爲情況是非常不相關的。

"0x"+ (i+0x1000000).toString(16).substr(1,6).toUpperCase() 

如果你想地板或天花板是黑色和白色,並把在一個函數:

public static function toHexColor(i:Number):String { 
     return i<0 ? "0x000000" : i>0xFFFFFF ? "0xFFFFFF" : "0x"+ (i+0x1000000).toString(16).substr(1,6).toUpperCase() ; 
    } 

這是一個增強版本與評論:

public static function toHexColor(i:Number):String { 
     //enforce ceiling and floor 
     if(i>0xFFFFFF){ return "0xFFFFFF";} 
     if(i<0){return "0x000000";} 
     //add the "magic" number 
     i += 0x1000000; 
     //append the 0x and strip the extra 1 
     return "0x"+ i.toString(16).substr(1,6).toUpperCase(); 
    } 
相關問題