| |
|
|||||||
|---|---|---|---|---|---|---|---|---|
Перевод чисел в различные системы счисления |
||||||||
|
Эта "статейка" расчитана для новичков. Здесь будет рассмотрена функция перевода чисел из десятичной системы в другие. Написал я эту функцию чисто для учебных целей (только не для меня, а для учеников). Этак рассмотрим эту несложную функцию. 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 г. |