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
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)
Change la caféine en lignes de code, et aurait parfois besoin de l'inverse.
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-2012 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,037 s - Crédits - Stats
1 connecté