2007年1月19日星期五

4.2.不同数字类型之间的转换


4.2. 不同数字类型之间的转换

问题
我要把当前数字类型转换为别的数字类型
解决办法
parseInt( ) 函数把字符串转换为十进制数,用 Number, uint, 或 int 对象的 toString( ) 方法转换为字符串。
讨论

在ActionScript中不管你怎么设置数字,它的内部结果总是以十进制存贮:
// 创建颜色对象
var pink:ColorTransform = new ColorTransform( );

// 用十六进制设置 RGB
pink.rgb = 0xF612AB;

// 显示这个值时:16126635
trace(pink.rgb);
如果你要输出为其他表示法,用 toString( radix ) 方法
下面的例子用构造uint对象,输出不同的格式:
// radix 为 2, 输出二进制
trace(new uint(51).toString(2)); // 显示: 110011
// radix 为 16, 输出十六进制
trace(new uint(25).toString(16)); // 显示:19
var quantity:Number = 164;
trace(quantity.toString(16)); // 显示: a4


下面的例子设置ColorTransform 对象的RGB值,调用 toString( ) 以十六进制显示:
var pink:Color = new ColorTransform( );
pink.rgb = 0xF612AB;
trace(pink.rgb.toString(16)); // 显示:f612ab
toString( ) 方法的参数值的合法范围在2到36,如果没有指定参数值,默认为10。
和 toString( ) 相反的是 parseInt( ) 函数。它把指定的字符串转换为数字。
下面的代码把各种字符串,输出十进制数。
trace(parseInt("110011", 2)); // 显示: 51
trace(parseInt("19", 16)); // 显示: 25
trace(parseInt("17", 10)); // 显示: 17
如果不指定字符串进制,默认为十进制,除非在字符串前加上0x, 0X, 或0:
trace(parseInt("0x12")); // 显示: 18
trace(parseInt("017")); // 显示: 15
下面的例子给出的字符串格式和指定进制冲突,这时会默认为十进制
// 但是下面的字符串是不合法的数字,因此返回0
trace(parseInt("0x12", 10)); // 显示: 0
下面的字符串为八进制,但指定为十进制,因此系统默认字符串为十进制,而不是八进制。
trace(parseInt("017", 10)); // 显示 17
trace(parseInt("A9FC9C")); // NaN


没有评论: