JavaScript进制转换

来源:互联网 发布:gns3 路由器端口ip 编辑:程序博客网 时间:2024/05/30 05:15

最近研究JavaScript公历转农历的算法,在博客上看到有人用parseInt进行基数转换,源码如下。

博客原文 http://www.cnblogs.com/bluedream2009/archive/2010/06/02/1750359.html

var _tm = "0|gd4|wrn|1d98|1tuh|2akm|2rfn|38g9|3plp|46vz|4o9k|55px|5n73|64o5|6m37|73fd|7kna|81qe|8io7|8zgq|9g4b|9wnk|ad3g|ath2".split('|');for (var i = _tm.length; i--;){_tm[i] = parseInt(_tm[i], 36);}


其它进制转十进制

JavaScript中,通过parseInt可以很方便的把其它进制转换成十进制。JavaScript支持2~36的进制转换。在36进制中包含的数值为0~9和a~z,其中a~z表示的范围是10~35,其它进制依此类推。下面看看parseInt的定义和用法。 摘自http://www.w3school.com.cn/js/jsref_parseInt.asp

// parseInt(value, radix)解析一个字符串,并返回一个10进制整数。// @param {string} value 必需,要被解析的字符串。// @param {int} radix 可选,表示要解析的数字的基数,该值介于2~36之间。//                    如果省略该参数或其值为0,则数字将以10为基础来解析。//                    如果该参数小于2或者大于36,则parseInt()将返回NaN。//                    如果value以0x或0X开头,将以16为基数。// @return {int} 返回10进制整数。如果参数value不可解析,则返回NaN。parseInt('10');         //返回 10     基数是10(十进制)parseInt('19', 10);     //返回 19     基数是10(十进制)parseInt('11', 2);      //返回 3      基数是2(二进制)parseInt('17', 8);      //返回 15     基数是8(八进制)parseInt('1f', 16);     //返回 31     基数是16(十六进制)parseInt('010');        //返回 8      把'010'看成8进制(在chrome和ie9中测试)parseInt('0x10');       //返回 16     把'0x10'看成16进制(在chrome和ie9中测试)parseInt('1d98', 36);   //返回 63836  基数是36进制


十进制转其它进制

JavaScript中,十进制整数转换成其他进制可以通过toString()实现。 摘自 http://www.w3school.com.cn/js/jsref_tostring_number.asp
// NumberObject.toString(radix)把一个Number对象转换为一个字符串。// @param {radix} 可选。规定表示数字的基数,使2~36之间的整数。若省略该参数,则使用基数10。//                如果该参数在2~36以外,则浏览器报错,在chrome和ie9下测试。// @return {string} 返回radix基数的字符串。var number = 50;number.toString();      //返回 50     基数是10(十进制)number.toString(2);     //返回 110010 基数是2(二进制)number.toString(8);     //返回 62     基数是8(八进制)number.toString(16);    //返回 32     基数是16(16进制)number.toString(36);    //返回 le     基数是32(32进制)number.toString(40);    //浏览器报错,在chrome和ie9中测试

对上面的代码进行进制转换,转换结果如下图所示。

var _tm = "0|gd4|wrn|1d98|1tuh|2akm|2rfn|38g9|3plp|46vz|4o9k|55px|5n73|64o5|6m37|73fd|7kna|81qe|8io7|8zgq|9g4b|9wnk|ad3g|ath2".split('|');//转换成10进制for (var i = _tm.length; i--;){_tm[i] = parseInt(_tm[i], 36);}console.log('十进制数组');console.dir(_tm);  //在浏览器控制台中查看结果。//转换成36进制for (var i = _tm.length; i--;){_tm[i] = _tm[i].toString(36);}console.log('36进制数组');console.dir(_tm);  //在浏览器控制台中查看结果。