hex2bin,hex2dec,hex2oct, etc

From
Vovanius Uryvaeff (2:5020/175.2)
To
Alexander Pashchenko
Date
2002-10-25T19:08:41Z
Area
RU.ALGORITHMS
From: "Vovanius Uryvaeff" <micro-s@vniiofi.ru>

Thu Oct 24 2002 23:07, Alexander Pashchenko wrote to All:

 AP> Hello everybody.

 AP> Самый избитый вопрос: киньте в мыло алгоритмы/реализации переводов из
 AP> одной    системы счисления в другую. (жел. на Pas/ASM).

 AP> Нужны все во все: hex->bin,oct,dec; bin->hex,oct,dec; oct->hex,bin,dec;
 AP> dec->bin,hex,oct.

 AP> Нужно мне прогу сделать, чтобы вводил число, а оно выводилось во всех
 AP> системах счисления, или на худой конец табличку числе в разных системах
 AP> распечатать...

 AP> ЗЫ _крайне желательно еще алгоритмы перевода дробной части числа в другие
 AP> с.с._

строку переводим в число следующим образом:
пока есть символы в строке:
  взять первую цифру из строки
  n := n*(основание системы счисления)+цифра

Целую часть переводим в любую систему делением.
function DigitToAsc(n integer):char
begin
    if n<10 then DigitToAsc:='0'+n
    else DigitToAsc:='A'-10+n
end;
procedure OutNumber(n,base:integer)
begin
    if n>=base then OutNumber(n div base,base);
    Write(DigitToAsc(n mod base));
end

Дробная часть переводится последовательным умножением на основание системы
счисления с печатью и отбрасываением целой части.
например 0.7 в Hex:
0.7 * 16 = 11.2 (печатаем B(символ 11и))
0.2 * 16 = 3.2 (---3)
0.2 * 16 = 3.2 (---3)
результат: 0.B33...

Send Email to vovanius2000<yxo>mail. ru

--- ifmail v.2.15dev5
 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)