Сам писал такую программу, кидаю функцию для перевода из людой системы в любую:
Код:
function SysToSys(Num:string; OldSys,NewSys:byte):string;
{подпрограмма возведения числа в степень}
function InStep(Ch,St:byte):integer;
var i:byte;
begin
Result:=1;
if St>0 then
for i:=1 to St do Result:=Result*Ch;
end;
{основная часть}
var i,Rez:integer; L:byte;
begin
{перевод числа ( Rez ) в десятичную систему из старой ( OldSys ) }
Rez:=0; L:=Length(Num);
for i:=1 to L do Num[i]:=UpCase(Num[i]);
for i:=1 to L do
if Copy(Num,i,1)[1] in ['A'..'Z'] then
Rez:=Rez+(Byte(Copy(Num,i,1)[1])-55)*InStep(OldSys,L-i)
else Rez:=Rez+StrToInt(Copy(Num,i,1))*InStep(OldSys,L-i);
{перевод числа ( Rez ) в новую систему ( NewSys ) из десятичной}
WHILE Rez>= NewSys DO
BEGIN
if (Rez mod NewSys) in [10..35] then
Result:=Char(55+(Rez mod NewSys))+Result
else
Result:=IntToStr(Rez mod NewSys)+Result;
Rez:=Rez div NewSys;
END;
if Rez in [10..35] then Result:=Char(55+Rez)+Result
else Result:=IntToStr(Rez)+Result;
end;
где Num - исходное число в виде строки
OldSys,NewSys - стараю и новая системы счисления (в интервале [2..36])
Возвращает результат в виде строки