Le langage SMS est exclu sur les forums ProgBoards, tout message ne respectant pas la charte sera déplacé, modifié, ou supprimé par nos modérateurs.

Forum Langages » Pascal / Delphi » conversion decimale hexadécimale sous pascal

Dauof
Visiteur
Citer - Posté le 13/04/2006 à 09:31
bonjour, je cherche à faire une conversion décimale en héxadécimale et vice versa, merci pour votre aide
neliger
Webmaster
RemonterCiter - Posté le 15/04/2006 à 01:42
J'ai pu trouver la source suivante : http://turbo-pascal.developpez.com/utilitaire/convert.zip

Il s'agit d'un petit programme de convertion en décimal/binaire/hexadécimal, un petit coup d'oeil à la source répondra donc certainement à ta question.

Si tu y trouve ton bonheur, n'hésite pas à revenir ici poster la réponse, qui aidera d'autres développeurs qui pourraient se poser la même question que toi (clein d'oeil)
Computaid SPRL - Conception - Développement - Infogérance : http://www.computaid.be
eTigris - Hébergement mutualisé - Serveurs dédiés : http://www.etigris.com
dauof
Visiteur
RemonterCiter Windows NT Msie 6 - Posté le 20/04/2006 à 10:05
Je te remercie pour ton aide, je vais essayer de m'inspirer de ce bout de soft pour finaliser mon développement qui consite à programmer des EPROMs, au cas où ça marche je n'hésiterais pas à tenir au courant tout le monde.
Mic**
Visiteur
RemonterCiter Windows XP Msie 7.0 - Posté le 23/03/2008 à 15:28
Salut
un petit programme simple pour convertire sur 32 BITs dans les trois bases:

USES
Crt;
{by zaitri michel france year 2005 Email:michel.zaitri@orange.fr
A modifier à Volonté m & j }

TYPE
chaine = STRING[16];

VAR
x,trad,bs,ch,car,ch1 : STRING;
chb,chq,chn : chaine;
nombre,nombreh,nombreb,c,d,i : LONGINT;
x1, x2,init,cy,color,b,ii,co : INTEGER;
p : pointer;
depart : CHAR;
size : WORD;

{=========================================================================}
{affiche le cadre du module de conversion}

PROCEDURE face;

BEGIN

TextColor(15);
TextBackground(0);

GoToXY(16,6);
TextColor(3);
TextBackground(0);
Write('Conversion D‚cimale Hexad‚cimale Binaire');
TextColor(10);
TextBackground(0);
GoToXY(1,7);
Write(' ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²');
TextColor(2);
TextBackground(0);
Write('»');
TextColor(10);
TextBackground(0);
GoToXY(1,8);
Write(' ²');
TextColor(3);
TextBackground(0);
Write('d');
GoToXY(58,8);
TextColor(10);
TextBackground(0);
Write('²');
TextColor(2);
TextBackground(0);
Write('º');
TextColor(10);
TextBackground(0);
GoToXY(1,9);
Write(' ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²');
TextColor(2);
TextBackground(0);
Write('º');
TextColor(10);
TextBackground(0);
GoToXY(1,10);
Write(' ²');
TextColor(3);
TextBackground(0);
Write('h');
GoToXY(58,10);
TextColor(10);
TextBackground(0);
Write('²');
TextColor(2);
TextBackground(0);
Write('º');
TextColor(10);
TextBackground(0);
GoToXY(1,11);
Write(' ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²');
TextColor(2);
TextBackground(0);
Write('º');
TextColor(10);
TextBackground(0);
GoToXY(1,12);
Write(' ²');
TextColor(3);
TextBackground(0);
Write('b');
GoToXY(58,12);
TextColor(10);
TextBackground(0);
Write('²');
TextColor(2);
TextBackground(0);
Write('º');
TextColor(10);
TextBackground(0);
GoToXY(1,13);
Write(' ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²By²M&J²²²²²²²²²²');
TextColor(2);
TextBackground(0);
Write('º');
GoToXY(15,14);
Write('ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ');
TextColor(11);
END;

{=========================================================================}
{convertit un d‚cimal en hexa}

PROCEDURE bb(q:LONGINT;
VAR b:INTEGER;
VAR chq:chaine);

VAR
r:LONGINT;

BEGIN
chb := '0123456789ABCDEF';
b := 16;
IF q > 0 THEN BEGIN
r := q MOD b;
q := q DIV b;
bb (q,b,chq);
chq := Concat (chq,Copy(chb,r+1,1)) END
ELSE chq := '';
END;

{=========================================================================}
{extrait x caractŠres d'une chaine}

FUNCTION mid(chaine:STRING;
deb:BYTE;
long:BYTE):STRING;

BEGIN
mid:=Copy(chaine,deb,long);
END;

{=========================================================================}
{convertit un d‚cimal en binaire}

PROCEDURE bin(y:INTEGER;
binair:LONGINT);

VAR
c,i :LONGINT;
co,ii :BYTE;

BEGIN
c:= binair;
FOR ii := 32 DOWNTO 1 DO BEGIN
i:=ii;
i :=(c*2) SHR i AND 1;
Write (i);
nombreb := nombreb + i;
END;
END;

{=========================================================================}
{convertit un binaire en d‚cimal}

PROCEDURE bin_deci (ch:STRING);

BEGIN
ch1:='';
car:='';
i:=1;
d:=0;
co := Length (ch);
FOR ii := co DOWNTO 1 DO ch1 := ch1 + mid(ch,ii,1);
FOR ii := 1 TO co DO BEGIN
car := mid(ch1,ii,1);
IF car = '1' THEN BEGIN
d:= d +i ;
END;
i:=i +i;
END;
nombre := d;
END;

{=========================================================================}
{=========================================================================}

{programme principal}

BEGIN
REPEAT
ClrScr;
face;

GoToXY(18,8);
Write ('CONVERTION V: 1.0 ');

GoToXY(18,10);
Write ('entrez la base de d‚part (D H ou B)');

GoToXY(18,12);
depart := ReadKey;
IF depart = Chr(27) THEN Halt(1);
Write ('base '+ depart);
Delay(500);

GoToXY(18,8);
Write(' ');
GoToXY(18,10);
Write(' ');
GoToXY(18,12);
Write(' ');

CASE depart OF
'h','H' : BEGIN
GoToXY(18,8);
Write ('entrez le nombre a traduire pr‚c‚d‚ de $');

GoToXY(18,10);
REPEAT
depart := ReadKey;
IF depart <> #13 THEN trad := trad + depart;
Write (depart);
UNTIL depart = #13;
x2 := Length (trad);
GoToXY(18,10);
Write(' ');
GoToXY(18,10);
Write (mid(trad,2,x2));
Val(trad,nombreh,x1);
Str(nombreh,trad);

GoToXY(18,8);
Write(' ');
GoToXY(18,8);
Write (nombreh);

GoToXY(18,12);
bin(1,nombreh);

END;
'd','D' : BEGIN
GoToXY(18,12);
Write ('entrez le nombre a traduire');

GoToXY(18,8);
trad := ' ';
nombre := 0;

REPEAT
depart := ReadKey;
IF depart <> #13 THEN trad := trad + depart;
Write (depart);
IF depart = #13 THEN BEGIN
bs := Copy(trad,2,Length (trad));
trad := bs;
END;
UNTIL depart = #13;
x2 := Length (trad);
Val(trad,nombre,x1);
Str(nombre,trad);
IF nombre <> 0 THEN BEGIN
GoToXY(18,10);
Write(' ');
GoToXY(18,10);
bb(nombre,b,chn);
Write (chn);
END;

GoToXY(18,12);
Write(' ');
GoToXY(18,12);
bin(1,nombre);
END;



'b','B' : BEGIN
GoToXY(18,10);
Write ('entrez le nombre a traduire');

GoToXY(18,12);
trad := ' ';
nombre := 0;


REPEAT
depart := ReadKey;
IF depart <> #13 THEN trad := trad + depart;
Write (depart);
UNTIL depart = #13;
GoToXY(18,8);
Write(' ');
GoToXY(18,8);
x1:=Length(trad);
ch := mid(trad,2,x1);
x1:=Length(ch);
bin_deci(ch);
IF nombre <> 0 THEN BEGIN

GoToXY(18,8);
Write(' ');
GoToXY(18,8);
Write (nombre);

GoToXY(18,10);
Write(' ');
GoToXY(18,10);
bb(nombre,b,chn);
Write (chn);
END;



END;
END;
depart := ReadKey;
nombre :=0;
nombreh :=0;
nombreb :=0;
trad:='';
ch :='';
x1:=0;
x2 :=0;
UNTIL depart = Chr(27);
END.


Poster une réponse

STOP aux fautes volontaires !
Message
Formatage
Note: pour partager du code source, merci d'utiliser le wall !
Smileys (sourire) (yekyek) (clein d'oeil) (désapprouve) (triste) (cool) (langue) (confus) (gêné) (neutre) (eek) (surpris) (diable) (flèche) (exclamation) (question) (diable) (idée) (méchant)
Pseudonyme
Recopiez le code
v6 © Computaid SPRL 2005-2008 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,057 s - Crédits - Stats
1 connecté