最近研究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); //在浏览器控制台中查看结果。