在flex中将signed int转换为8位十六进制

时间:2013-03-27 12:40:31

标签: actionscript-3 flex flash-builder

如何在flex

中将int类型转换为8位十六进制小数

我需要一个类似于c#[ToString(“X8”)]的函数。此函数在c#中完成工作。 但是flex中的选项是什么?

2 个答案:

答案 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();
    }