Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.09;
Скачать: CL | DM;

Вниз

Алгоритм перевода десятиричного числа в двоичный в HEX OCT и т.д.   Найти похожие ветки 

 
TJ   (2003-12-24 23:09) [0]

Алгоритм перевода десятиричного числа в двоичный в HEX OCT и т.д. Звучит как в 1-ом классе, но помогите посмотрите в загажниках


 
Всеволод Соловьёв   (2003-12-24 23:20) [1]

это было написано в ТР 7.0
на быстрость итд итп не претендует, но работает

var n:longint;
s:string;

function int2hex(n: longint): char;
var c: string;
begin
if n = 15 then c := "F" else
if n = 14 then c := "E" else
if n = 13 then c := "D" else
if n = 12 then c := "C" else
if n = 11 then c := "B" else
if n = 10 then c := "A" else
str(n, c);
int2hex := c[1];
end;

function int2oct(n: longint): char;
var c: string;
begin
str(n, c);
int2oct := c[1];
end;

begin
write("Vvedite chislo: ");
readln(n);
s:="";
while n>0 do
begin
s := s + int2oct(n mod 8);
n := n div 8;
end;
for n := length(S) downto 1 do
begin
s := s + s[n];
delete(s, n, 1);
end;
writeln(s);
readln;
end.


 
Talla2k   (2003-12-25 01:29) [2]

inttohex(12,2)
memo1.lines.add(inttohex(12,2)); увидишь 0с

А для остальных надо самому писать процедуры


 
Talla2k   (2003-12-25 01:38) [3]

Ну вот еще откопал(писал очень давно,так что проверь)

function MakeStr(C: Char; N: Integer): string;
begin
if N < 1 then Result := ""
else begin
{$IFNDEF WIN32}
if N > 255 then N := 255;
{$ENDIF WIN32}
SetLength(Result, N);
FillChar(Result[1], Length(Result), C);
end;
end;

function AddChar(C: Char; const S: string; N: Int64): string;
begin
if Length(S) < N then
Result := MakeStr(C, N - Length(S)) + S
else Result := S;
end;

function Dec2Numb(N:int64; A, B: Byte): string;
var
C: int64;
Number: int64;
begin
if N = 0 then Result := "0"
else begin
Number := int64(N);
Result := "";
while Number > 0 do begin
C := Number mod B;
if C > 9 then C := C + 55
else C := C + 48;
Result := Chr(C) + Result;
Number := Number div B;
end;
end;
if Result <> "" then Result := AddChar("0", Result, A);
end;

function Hex2Dec(const S: string): int64;
var
HexStr: string;
begin
if Pos("$", S) = 0 then HexStr := "$" + S
else HexStr := S;
Result := StrToInt64Def(HexStr, 0);
end;

function Dec2Hex(N: LongInt; A: Byte): string;
begin
Result := IntToHex(N, A);
end;

function bytetoint(data:string):int64;
var s:string;
i,ii,z:integer;ch:char;
begin
s:="";
for i:=length(data)downto 1 do begin
ch:=data[i];
z:=0;
for ii:=1 to 255 do if ch=chr(ii) then z:=ii;
s:=s+dec2hex(z,2);
end;
result:=hex2dec(s);
end;


 
Babay   (2003-12-25 05:02) [4]

Когдато очень давно попалась мне курсовая работа по алгоритмам перевода чисел из одной системы в другую. И конечно тама была прога это делающая. Написано все было на ТР. Я перестроил это дело в функцию и теперь перевожу свободно из системы в систему.
Так что на авторство не претендую, но даю функцию. Жаль немогу указать автора. (по молодости лет не предавал значения таким вещам а теперь вот жалею)

Function TranslationNumber(a,isxS,konS:String):String;
{переводит число a из isxS системы счисления в konS систему счисления}

Var Znach,i,j:integer;
Chast:Longint;
Promeg:Real;
Help:byte;
Pom:string;
isx,kon:integer;
begin
promeg:=0;Znach:=0;Help:=0;
pom:="";
isx:=StrToInt(isxS);
kon:=StrToInt(konS);
a:=AnsiUpperCase(a);
Result:="";
for i:=1 to Length(a) do begin { перевод введенного числа в десятичную}
if a[i]<"A" then Znach:=Ord(a[i])-48
else Znach:=Ord(a[i])-55;
promeg:=promeg+Znach*IntPower(isx,Length(a)-i);
end;
i:=0;
Repeat { определение максимального порядка результата }
inc(i);
Chast:=Trunc(Promeg/IntPower(Kon,i));
Until Chast<Kon;
For j:=i downto 0 do begin { перевод в нужную систему}
Help:=Trunc(Promeg/IntPower(Kon,j));
If Help>9 Then Pom:=Chr(55+Help)
Else Pom:=IntToStr(Help);
Result:=Result+Pom;
Promeg:=Promeg-Help*Power(Kon,j);
end;
end;

Пример использования
s:=TranslationNumber("16","10","16");// перевод числа 16 из 10-ной в 16-ю
s:=TranslationNumber("01010","2","10");// перевод числа 01010 из 2-ной в 10-ю
s:=TranslationNumber("11А","12","10");//перевод числа 11А bp 12-ной в 10-ю

ну естественно работает тока для целых чисел.



Страницы: 1 вся ветка

Текущий архив: 2004.01.09;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.012 c
8-25458
NikNik
2003-09-07 23:11
2004.01.09
Графическое изображение Wav-файла?


1-25394
npAKTuk
2003-12-24 20:41
2004.01.09
Проблема в работе с файлами


14-25599
mfender
2003-12-15 07:52
2004.01.09
Теперь в Штатах все встанет на свои места!


4-25669
reef
2003-11-07 16:32
2004.01.09
WriteFile и 1Mb массив


1-25410
EugenCFG
2003-12-24 14:23
2004.01.09
Мерцания при прорисовки или большой объём файлов.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский