@interlocked
.NET developer

▐п▐╓▐у▐▄▐р▐▌▐ю▐▄▐р▐п▐╓▐у▐▄▐р▐▌▐ю▐▄▐р?

                                
  • Вопрос задан
  • 172 просмотра
Пригласить эксперта
Ответы на вопрос 1
@prishelec
Пользуйся милый человек.
Только не помню что за метод. Давно писал по неким правилам – автора не понмю.

{*******Перевод К-ой в десятичеую степнь******}
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;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы