Логотип
Vicking.narod.ru
Программирование
Исходные тексты и утилиты

Перевод чисел в различные системы счисления


Гостевая книга
 
 

Эта "статейка" расчитана для новичков. Здесь будет рассмотрена функция перевода чисел из десятичной системы в другие. Написал я эту функцию чисто для учебных целей (только не для меня, а для учеников).

Этак рассмотрим эту несложную функцию.

function ConvertNumber(Num, Base: Cardinal; Group: Cardinal = 4;
  const Br: string = #32): string;
const
   font: array [0..15] of Char =
   ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
var
  r, i: Cardinal;
begin
  if (Base<2) or (Base>16) then
  begin
    raise EConvertError.CreateFmt('Invalid the base value of the system. '+
    'It must be between 2 and 16. (%d)', [Base]);
  end;
  Result := '';
  r := 0;
  repeat
    Inc(r);
    i := Num mod Base;
    Result := font[i] + Result;
    Num := Num div Base;
    if Group <> 0 then
      if ((r mod Group) = 0) and (Num <> 0) then
        Result := Br + Result;
  until Num = 0;
end;

Аргументы

Num

Число, которое должно быть переведено.

Base

Основание системы, в которую должно быть переведено данное число.

Group

Количество цифр в группе.

Br

Последовательность символов для разделения групп.

Данная функция имеет ограничение: нет возможности переводить отрицательные числа. Как видно из кода, функция может перводить числа в системы с основаниями от 2 до 16, разделяя результат на группы. Она работает по остаточному алгоритму. Примеры выполнения функции ConvertNumber(123456789, 2, 4, ' '):

111 0101 1011 1100 1101 0001 0101

На этой скромной ноте я закончу. Задавайте вопросы.


© Зинкевич Виктор, 2004 - 2005 г.


Hosted by uCoz