Revision: 7528
Updated Code
at December 8, 2009 12:19 by wizard04
Updated Code
//Convert a number to a different base (e.g., from hex to decimal) function changeBase(num, from, to) { if(isNaN(from) || from < 2 || from > 36 || isNaN(to) || to < 2 || to > 36) throw (new RangeError("Illegal radix. Radices must be integers between 2 and 36, inclusive.")); num = parseInt(num, from); //convert to decimal num = num.toString(to); //convert the decimal to desired base return num.toUpperCase(); }
Revision: 7527
Updated Code
at August 6, 2008 14:48 by wizard04
Updated Code
//Convert a number to a different base function changeBase(num, toBase, fromBase) { fromBase = fromBase || 10; if(isNaN(toBase) || isNaN(fromBase)) return ""; if(toBase < 2 || toBase > 36 || fromBase < 2 || fromBase > 36) return ""; //out of accepted range num = (""+num).toUpperCase(); //make sure it's a string if(!(/^[0-9A-Z]+$/i).test(num)) return ""; //invalid characters function toDec(c){ return !isNaN(c) ? 1*c : c.charCodeAt(0)-55; }; var fromDec = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //first convert to a decimal var d, dec = 0; while(num!="") { d = toDec(num[0]); if(d >= fromBase) return ""; //invalid character dec = dec*fromBase + d; num = num.slice(1); } //then convert to base toBase while(dec > 0) { num = fromDec[dec%toBase] + num; dec = Math.floor(dec/toBase); } return num; }
Revision: 7526
Updated Code
at August 6, 2008 14:47 by wizard04
Updated Code
//Convert a number to a different base function changeBase(num, toBase, fromBase) { fromBase = fromBase || 10; if(isNaN(toBase) || isNaN(fromBase)) return ""; if(toBase < 2 || toBase > 36 || fromBase < 2 || fromBase > 36) return ""; //out of accepted range num = (""+num).toUpperCase(); //make sure it's a string if(!(/^[0-9A-Z]+$/i).test(num)) return ""; //invalid characters function toDec(c){ return !isNaN(c) ? 1*c : c.charCodeAt(0)-55; }; var fromDec = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //first convert to a decimal var dec = 0; while(num!="") { d = toDec(num[0]); if(d >= fromBase) return ""; //invalid character dec = dec*fromBase + d; num = num.slice(1); } //then convert to base toBase while(dec > 0) { num = fromDec[dec%toBase] + num; dec = Math.floor(dec/toBase); } return num; }
Revision: 7525
Updated Code
at August 6, 2008 14:45 by wizard04
Updated Code
//Convert a number to a different base function changeBase(num, toBase, fromBase) { fromBase = fromBase || 10; if(isNaN(toBase) || isNaN(fromBase)) return ""; if(toBase < 2 || toBase > 36 || fromBase < 2 || fromBase > 36) return ""; //out of accepted range num = (""+num).toUpperCase(); //make sure it's a string if(!(/^[0-9A-Z]+$/i).test(num)) return ""; //invalid characters function toDec(c){ return !isNaN(c) ? 1*c : c.charCodeAt(0)-55; }; var fromDec = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //first convert to a decimal var dec = 0; while(num!="") { d = toDec(num.charAt(0)); if(d >= fromBase) return ""; //invalid character dec = dec*fromBase + d; num = num.slice(1); } //then convert to base toBase while(dec > 0) { num = fromDec[dec%toBase] + num; dec = Math.floor(dec/toBase); } return num; }
Revision: 7524
Updated Code
at August 6, 2008 14:40 by wizard04
Updated Code
//Convert a number to a different base function changeBase(num, toBase, fromBase) { fromBase = fromBase || 10; if(isNaN(toBase) || isNaN(fromBase)) return ""; if(toBase < 2 || toBase > 36 || fromBase < 2 || fromBase > 36) return ""; //out of accepted range num = (""+num).toUpperCase(); //make sure it's a string if(!(/^[0-9A-Z]+$/i).test(num)) return ""; //invalid characters function toDec(c) { if(!isNaN(c)) return 1*c; return c.charCodeAt(0)-55; } var fromDec = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //first convert to a decimal var dec = 0; while(num!="") { d = toDec(num.charAt(0)); if(d >= fromBase) return ""; //invalid character dec = dec*fromBase + d; num = num.slice(1); } //then convert to base toBase while(dec > 0) { num = fromDec[dec%toBase] + num; dec = Math.floor(dec/toBase); } return num; }
Revision: 7523
Updated Code
at July 29, 2008 09:59 by wizard04
Updated Code
function changeBase(num, toBase, fromBase) { if(isNaN(num) || !toBase || (fromBase && isNaN(fromBase))) return ""; num = ""+num.toUpperCase(); //make sure it's a string if(!fromBase) fromBase = 10; var digit = ""; //first, convert num to decimal if(fromBase == 10) { dec = 1*num; if(isNaN(dec)) return ""; //invalid characters num = ""; } else { if(!(/^[0-9A-Z]+$/i).test(num)) return ""; //invalid characters var dec = 0; do { digit = num.charAt(0); if(!isNaN(digit)) dec = dec*fromBase + 1*digit; else if(digit.charCodeAt(0)-55 >= fromBase) return ""; //invalid character else dec = dec*fromBase + digit.charCodeAt(0)-55; num = num.slice(1); }while(num != "") } //then convert to base toBase if(toBase > 36) return ""; //base is too big; not enough letters in the alphabet digit = ""; do { digit = dec % toBase; if(digit <= 9) num = digit.toString() + num; else num = String.fromCharCode(digit+55) + num; dec = (dec - dec%toBase) / toBase; }while(dec > 0) return num; }
Revision: 7522
Updated Code
at July 28, 2008 12:31 by wizard04
Updated Code
function changeBase(num, toBase, fromBase) { if(isNaN(num) || !toBase) return ""; num = ""+num; //make sure it's a string if(!fromBase) fromBase = 10; var digit = ""; //first, convert num to decimal if(fromBase == 10) { dec = 1*num; if(isNaN(dec)) return ""; //invalid characters num = ""; } else { if(!(/^[0-9A-Z]+$/i).test(num)) return ""; //invalid characters var dec = 0; do { digit = num.charAt(0); if(!isNaN(digit)) dec = dec*fromBase + 1*digit; else if(digit.charCodeAt(0)-55 >= fromBase) return ""; //invalid character else dec = dec*fromBase + digit.charCodeAt(0)-55; num = num.slice(1); }while(num != "") } //then convert to base toBase if(toBase > 36) return ""; //base is too big; not enough letters in the alphabet digit = ""; do { digit = dec % toBase; if(digit <= 9) num = digit.toString() + num; else num = String.fromCharCode(digit+55) + num; dec = (dec - dec%toBase) / toBase; }while(dec > 0) return num; }
Revision: 7521
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at July 28, 2008 12:10 by wizard04
Initial Code
Number.prototype.toBase = function(base) { if(base > 36) return ""; //base is too big; not enough letters in the alphabet var n = this.valueOf(); var result = ""; var digit = ""; do { digit = n % base; if(digit <= 9) result = digit.toString() + result; else result = String.fromCharCode(digit+55) + result; n = (n - n%base) / base; }while(n > 0) return result; }; String.prototype.numberFromBase = function(base) { if(!(/^[0-9A-Z]+$/i).test(this)) return NaN; //invalid characters var s = this.valueOf(); var result = 0; var digit = ""; do { digit = s.charAt(0); if(!isNaN(digit)) result = result*base + 1*digit; else if(digit.charCodeAt(0)-55 >= base) return NaN; //invalid character else result = result*base + digit.charCodeAt(0)-55; s = s.slice(1); }while(s != "") return result; }
Initial URL
Initial Description
Convert a number to a different base.
Initial Title
Number Base Conversion
Initial Tags
javascript, number
Initial Language
JavaScript