如何在flex
中将int类型转换为8位十六进制小数我需要一个类似于c#[ToString(“X8”)]的函数。此函数在c#中完成工作。 但是flex中的选项是什么?
答案 0 :(得分:5)
如文档中所述,它几乎相同:
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
答案 1 :(得分: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();
}