1

如何在 flex 中将 int 类型转换为 8 位十六进制十进制

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

4

2 回答 2

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
于 2013-03-27T13:00:04.280 回答
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();
    }
于 2014-11-03T01:33:22.347 回答