Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2547 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  [Résolut]Conversion d'un base 10 en base 16

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolut]Conversion d'un base 10 en base 16

n°1914344
The matrix
Chacun fait ce qu'il en veut.
Posté le 12-08-2009 à 13:23:08  profilanswer
 

Bonjour,
 
je cherche l'algo qui me permettrait de convertir un base 10 en base 16, thx.


Message édité par The matrix le 12-08-2009 à 20:33:43

---------------
des gestes simples et ponctués, par quelques points presque importants, la précision coordonnée, d'une île déserte, des plans secrets, d'un architecte, à la retraite, passionné par son métier, refaire le monde, à son idée, tracer des routes, les emprunter
mood
Publicité
Posté le 12-08-2009 à 13:23:08  profilanswer
 

n°1914355
The matrix
Chacun fait ce qu'il en veut.
Posté le 12-08-2009 à 13:52:02  profilanswer
 

Avec Ada, j'ai fait ceci ...
 

Code :
  1. procedure Test is
  2.  
  3.   function Hex_Image(Num : Integer) return String is
  4.      Image : String(1..9);
  5.      Last  : Positive := 9;
  6.      Number : Integer := num;
  7.      type Hexa_Digit is
  8.        ('0', '1', '2', '3', '4', '5', '6', '7',
  9.         '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
  10.  
  11.      Rest : Integer;
  12.   begin
  13.      while number > 16 loop
  14.         image(Last) := Character'Value(Hexa_Digit'image(Hexa_Digit'val((Number rem 16))));
  15.         Number := Number - (Number rem 16);
  16.         Last := Last - 1;
  17.  
  18.      end loop;
  19.      image(Last) := Character'Value(Hexa_Digit'image(Hexa_Digit'val(Number)));
  20.      return Image(Last..Image'length);
  21.   end Hex_Image;
  22.  
  23.  
  24. begin
  25.   Put(Hex_Image(Num => 100));
  26. end Test;


 
J'ai un Constraint_Error levé ligne 17 à l'execution.


Message édité par The matrix le 12-08-2009 à 13:52:38

---------------
des gestes simples et ponctués, par quelques points presque importants, la précision coordonnée, d'une île déserte, des plans secrets, d'un architecte, à la retraite, passionné par son métier, refaire le monde, à son idée, tracer des routes, les emprunter
n°1914369
The matrix
Chacun fait ce qu'il en veut.
Posté le 12-08-2009 à 14:17:12  profilanswer
 

Voici le code corrigé...
 

Code :
  1. function Hex_Image(Num : Integer) return String is
  2.      Image : String(1..9);
  3.      Last  : Positive := 9;
  4.      Number : Integer := num;
  5.      type Hexa_Digit is
  6.        ('0', '1', '2', '3', '4', '5', '6', '7',
  7.         '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
  8.  
  9.      Rest : Integer;
  10.   begin
  11.      while (Number rem 16) /= 0 loop
  12.  
  13.         Rest := (Number rem 16);
  14.         image(Last) := Character'Value(Hexa_Digit'image(Hexa_Digit'val((rest))));
  15.         number := Number - rest;
  16.  
  17.         Last := Last - 1;
  18.  
  19.      end loop;
  20.      image(Last) := Character'Value(Hexa_Digit'image(Hexa_Digit'val(Number/16)));
  21.      return Image(Last..Image'length);
  22.   end Hex_Image;


 
Merci !


---------------
des gestes simples et ponctués, par quelques points presque importants, la précision coordonnée, d'une île déserte, des plans secrets, d'un architecte, à la retraite, passionné par son métier, refaire le monde, à son idée, tracer des routes, les emprunter
n°1914373
Taz
bisounours-codeur
Posté le 12-08-2009 à 14:20:58  profilanswer
 

Tu fais par division successive par 16, en traduisant le reste en base 16 (=> 1 chiffre). Et tu renverses le tout:
 


30041983/16
1877623.93750000000000000000
1877623*16
30041968
30041983-30041968
[b]15[/b]
 
1877623/16
117351.43750000000000000000
1877623-117351*16
[b]7[/b]
 
117351/16
7334.43750000000000000000
117351-7334*16
[b]7[/b]
 
7334/16
458.37500000000000000000
7334-458*16
[b]6[/b]
 
458/16
28.62500000000000000000
458-28*16
[b]10[/b]
 
28/16
1.75000000000000000000
28-1*16
[b]12[/b]
 
[b]1[/b]


 
Et voilà, tu relis de bas en haut:

printf %x 30041983
1ca677f


 
 

n°1914378
The matrix
Chacun fait ce qu'il en veut.
Posté le 12-08-2009 à 14:24:23  profilanswer
 

Merci Taz !  
 
Je savais plus, j'étais un peu pommé. Merci.


---------------
des gestes simples et ponctués, par quelques points presque importants, la précision coordonnée, d'une île déserte, des plans secrets, d'un architecte, à la retraite, passionné par son métier, refaire le monde, à son idée, tracer des routes, les emprunter
n°1914425
The matrix
Chacun fait ce qu'il en veut.
Posté le 12-08-2009 à 15:22:24  profilanswer
 

Petite rectification du code ci-dessus ...
 

Code :
  1. function Hex_Image(Num : Integer) return String is
  2.      Image : String(1..9);
  3.      Last  : Positive := 9;
  4.      Number : Integer := num;
  5.      type Hexa_Digit is
  6.        ('0', '1', '2', '3', '4', '5', '6', '7',
  7.         '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
  8.  
  9.      Rest : Integer;
  10.   begin
  11.      loop
  12.  
  13.         Rest := (Number rem 16);
  14.         image(Last) := Character'Value(Hexa_Digit'image(Hexa_Digit'val((Rest))));
  15.         number := Number - rest;
  16.  
  17.         Last := Last - 1;
  18.         exit when (Number rem 16) = 0;
  19.      end loop;
  20.      image(Last) := Character'Value(Hexa_Digit'image(Hexa_Digit'val(Number/16)));
  21.      return Image(Last..Image'length);
  22.   end Hex_Image;


Message édité par The matrix le 12-08-2009 à 15:22:38

---------------
des gestes simples et ponctués, par quelques points presque importants, la précision coordonnée, d'une île déserte, des plans secrets, d'un architecte, à la retraite, passionné par son métier, refaire le monde, à son idée, tracer des routes, les emprunter

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  [Résolut]Conversion d'un base 10 en base 16

 

Sujets relatifs
Inserer données fichier excel dans base Mysqlrecuperer des données de la base
[Résolut]Traduction du C++Conversion d'un nombre hexa en float
enregistrement en arabe illisible dans la base mysqlhebergement d'une base MySQL distante
inserer dans la baseLire donnée dans une base avec mysql
Utiliser base de donne d'un autre siteformater du texte issu d'une base PHP
Plus de sujets relatifs à : [Résolut]Conversion d'un base 10 en base 16


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR