Пользуйся милый человек.
Только не помню что за метод. Давно писал по неким правилам – автора не понмю.
{*******Перевод К-ой в десятичеую степнь******}
function XToDecimal(Value: String; Fn: Byte): LongInt;
var
Result: Longint;
i: Integer;
{**************Перевод строки в число*************}
function StrToInt(Index: Char): Integer;
var
V, Code: Integer;
begin
Index := UpCase(Index);
if Index in ['0'..'9'] then
Val(Index,V,Code);
if Index in ['A'..'Z'] then
V := Ord(Index) - 55;
StrToInt := V;
end;
{**************************************}
begin
Result := 0;
case Length(Value) of
1: Result := StrToInt(Value[1]);
2: Result := StrToInt(Value[1]) * Fn + StrToInt(Value[2])
else
for i := 1 to Length(Value) do
Result := Result * Fn + StrToInt(Value[i]);
end;
XToDecimal := Result;
end;
{***Перевод из десятичной в К-ую систему**}
function DecimalToX(Value: LongInt; Fn: Byte): String;
const
SizeStr = 255;
var
Buf: array [1..SizeStr] of Char;
Result: String;
i: Integer;
{*********Перевод числа в строку*******}
function IntToStr(Index: Integer): Char;
begin
case Index of
0..9: IntToStr := Chr(Index + 48) ;
10..36: IntToStr := Chr(Index + 55) ;
end;
end;
{**************************************}
begin
i := SizeStr;
Result := '';
while (Value <> 0) do
begin
Buf[i] := IntToStr(Value mod Fn);
Value := Value div Fn;
Dec(i);
end;
Result := Buf;
Delete(Result, 1, i);
DecimalToX := Result;
end;