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)