読者です 読者をやめる 読者になる 読者になる

perseInt

parseIntはn進数に変換してくれるナイスな関数なのですが基数は36までしか対応してくれません ><
大文字、小文字のアルファベットを識別して、62進数に対応して欲しい。<自分で作れ

window.parseInt = (function(){
	if(parseInt.toString().indexOf('[native code]') > 0){
	    var _parseInt = window.parseInt;
	    return function(num, base){
		if(base && base > 36 && base < 63){
		    if(typeof num === 'number' || typeof num === 'string'){
			var s = 0, t = 0, c = 0;
			while(num){
			    t = num[0];
			    c = t.charCodeAt();
			    t = (48 <= c && c <= 57) ? c - 48 : ((65 <= c && c <= 90) ? c - 55 : ((97 <= c && c <= 122) ? c - 61 : false));
			    if(t === false || t > base){
				return NaN;
			    }
			    s += Math.pow(base, num.length - 1) * t;
			    num = num.substr(1,num.length - 1);
			}
			return s;
		    }
		    return NaN;
		}else{
		    return _parseInt(num, base);
		}
	    }
	}else{
	    return parseInt;
	}
    })();

こんな感じ?