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