вот из любой системы счисления в любую другую, даже вымышленную
num - само число
fromNum - в виде строки передаешь набор символов исходной системы счисления (к примеру для десятичной это будет "0123456789", для двоичной "01", для восьмеричной "01234567", а вымышленная может быть хоть "м84;354,9е75478" - из этих же символов и должно состоять тогда твое число)
toNum - набор символов конечного результата
Единственное, что надо позаботиться в этой функции о спецсимволах, а то мне было влом...
Если набор символов fromNum не совпадает с исходным числом, вернет пустышку.
function NumConvert (num, fromNum, toNum) {
NUM = num.split("");
i = 0;
while (NUM[i]) {
regexp = new RegExp (NUM[i]);
if (!regexp.exec(fromNum)) {
rslt = "";
return rslt;
}
i++;
}
fromNum = fromNum.split("");
fN = fromNum.length;
toNum = toNum.split("");
tN = toNum.length;
arr = new Object();
i = 0;
while (fromNum[i]) {
arr[(fromNum[i])] = i;
i++;
}
newNum = 0;
i = NUM.length - 1;
while (i >= 0) {
newNum += arr[String(NUM[i])] * Math.pow(fN, NUM.length - i - 1);
i--;
}
i = 1;
while (Math.pow(tN, i) <= newNum) {
i++;
}
rslt = '';
while (i > 0) {
symb = (String(newNum / Math.pow(tN, i - 1))).match(/^\d+/);
rslt += String(toNum[symb]);
newNum -= Number(symb) * Math.pow(tN, (i - 1));
i--;
}
return rslt;
}