Показать сообщение отдельно
  #2  
Старый 23.09.2011, 22:43
chainik chainik вне форума
Начинающий
 
Регистрация: 30.06.2008
Сообщения: 140
Репутация: 8882
По умолчанию

Неубиенная тема!!!!!!!!!!!
Я уже раза 3 здесь на форуме отвечал на этот вопрос.
Отвечаю в очередной раз (и думаю что не последний)
В следующем семестре все повторится....
Здесь 2 функции, переводящие числа по любому основанию (M) и обратно

Код:
const
Symb:array[0..15] of char='0123456789ABCDEF';

function StrToIntM(s:string;M:word):int64;
var
i:integer;
begin
s:='0'+Trim(s);
Result:=0;i:=1;
while (i <= Length(s)) and (s[i] in [Symb[0]..Symb[M-1]]) do inc(i);
if i > Length(s) then
    for i:=1 to length(s) do
        case s[i] of
        '0'..'9':Result:=Result*M + ord(s[i])-48;
        'A'..'F':Result:=Result*M + ord(s[i])-55;
        'a'..'f':Result:=Result*M + ord(s[i])-87;
        end    //case
else
Result:=-1;
end;

function IntToStrM(x:int64;M:word):string;
begin
Result:='';
    repeat
    Result:=Symb[x-M*(x div M)]+Result;
    x:=x div M;
    until x <= 0 ;
end;
Ответить с цитированием