如何在 flex 中将 int 类型转换为 8 位十六进制十进制
我需要一个在 c# [ ToString("X8") ] 中类似的函数。这个函数在 c# 中完成了这项工作。但是 flex 中的选项是什么?
如何在 flex 中将 int 类型转换为 8 位十六进制十进制
我需要一个在 c# [ ToString("X8") ] 中类似的函数。这个函数在 c# 中完成了这项工作。但是 flex 中的选项是什么?
如文档中所述,它几乎相同:
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
注意:这适用于 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();
}