as3——数字进制的转换

来源:互联网 发布:2016年尼尔森数据分析 编辑:程序博客网 时间:2024/06/10 04:21
虽然数字不总是焦点,但是不可小看它们在代码中的能力和重要性。数字引进了所有的形变和二进制到十六进制的尺度。每一种表示类型都有它最有价值的独到之处。例如,十六进制的数字常用来表示RGB颜色这数值,因为它能够轻松辨别三种颜色的成分。
    近距离涉及数字是数学的主题。没有数学操作,flash影片会变得笨拙。简单的操作象加法和减法是ActionScript程序的基础,更进一步的数学像随机数字和三角函数的计算是先进程序的精华。
    ActionScript 3.0三基本数值的类型:number、int和uint。number是任何的浮点数字,而int和uint是整数。int和uint之间的区别是int是设定负和非负整数,而uint是设定非负整数。


 

利用带有基数参数的parseInt()函数转化成一个十进制表示的字符串。用带有基数参数的Number, uint或int对象的toString()方法将十进制的数字转换为其它进制的字符串。
    在ActionScript中无论设置一个什么样的数值,结果都被作为十进制检索:
// Create a Color object
var pink:ColorTransform = new ColorTransform(  );

// Set the RGB value as a hexadecimal
pink.rgb = 0xF612AB;

// This displays the value as decimal: 16126635
trace(pink.rgb);
    当然,如果想要输出其它形式的值,可以用toString(radix)对Number,unit或int对象的任何一个数字转换成字符串形式的另一种进制的值。
    下面两个例子是将unit对象转换输出二进制和十六进制的字符串。
// The radix is 2, so output as binary
trace(new uint(51).toString(2));  // Displays: 110011
// The radix is 16, so output as hex
trace(new uint(25).toString(16)); // Displays: 19
    当一个被符值的数字变量使用toString()方法时,flash会在执行toString()方法前自动建立一个新的Number, uint或int对象。虽然这不是典型的良好的习惯,但也不是技术上的错误,和在大部分应用程序的不同是可以忽略的。
var quantity:Number = 164;
trace(quantity.toString(16)); // Displays: a4
    注意:这些例子的结果不是数字类型,而是字符串,像110011,19,A4。
    下面的例子是设置一个ColorTransform对象的RGB值,执行toString()结果显示一个十六进制的值。
// Create a Color object
var pink:Color = new ColorTransform(  );

// Set the RGB value as a hexadecimal
pink.rgb = 0xF612AB;

trace(pink.rgb.toString(16));  // Displays: f612ab

    toString() 方法的基数叁数的有效范围是从 2 到 36。如果执行toString()不含参数或者无效参数,那么默认返回的是十进制。
    用含有参数的parseInt()函数可以达到toString()的逆运算。parseInt()函数含有一个字符串值和一个数字。这有利于除十进制的工作。
    下面三个例子展示了从二进制,十六进制和十进制的字符串转化为数字(注意这个结果总是一个十进制的)。
trace(parseInt("110011", 2));  // Displays: 51
trace(parseInt("19", 16));     // Displays: 25
trace(parseInt("17", 10));     // Displays: 17
    如果省略,基数参数默认识10,除非、字符串以0x或0开头,这种情况默认是十六进制或八进制:
trace(parseInt("0x12"));     // The radix is implicitly 16. Displays: 18
trace(parseInt("017"));      // The radix is implicitly 8. Displays: 15
    一个明确的基数会覆盖模糊的。在下面的例子中,得到的结果是0而不是12。当这个数被以十进制处理,碰到非数字字符x时转换会停止:
// The number is treated as a decimal, not a hexadecimal number
trace(parseInt("0x12", 10));   // Displays: 0 (not 12 or 18)
    这样,在数字前面的0会被当作一个自由数字处理,而不是一个八进制的数:
// The number is treated as a decimal, not an octal number
trace(parseInt("017",  10));   // Displays: 17 (not 15)
    千万不要忘记0,0x或一个明确的基数。下面输入的字符串作为十进制而返回NaN(不是数字)因为A不能转换成是个整数:
trace(parseInt("A9FC9C"));     // NaN

 
原创粉丝点击