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

  FORUM HardWare.fr
  Programmation
  Ada

  Coment concatener tois entier sous forme hexa ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Coment concatener tois entier sous forme hexa ?

n°1914334
The matrix
Chacun fait ce qu'il en veut.
Posté le 12-08-2009 à 12:16:00  profilanswer
 

Bonjour,
Je doit ecrire une fonction traduisant l'effet d'une macro C donnant un entier en concatenant  trois hexa.
 
Mon problème est de trouver comment obtenit une représentation hexa avec Ada, pas trouvé :/
 
Merci pour votre aide.   :jap:


---------------
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 à 12:16:00  profilanswer
 

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

Donc, je disais... Que j'avais réussi à convertir un base 10 en base 16... Avec le code ci-dessous...

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;


 
La concatenation, bon, je donne pas de cours....
 
Par contre maintenant, je doit retrouver l'entier correspondant à la chaîne de trois hexa concatené.
 
J'ai donc une chaîne de caractères exprimant un nombre en base 16 et je veux un type entier long en base 10.
 
Et la question est, comment procéder... Comme d'hab, le premier sera le premier.


---------------
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°1914413
The matrix
Chacun fait ce qu'il en veut.
Posté le 12-08-2009 à 15:07:42  profilanswer
 

Hep !
 
 
Pour l'instant, je n'ai rien trouvé de mieux que d'écrire la chaîne dans un fichier en l'encadrant par "16#" et '#' et de relire. Ca marche.


---------------
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°1914420
Deamon
Posté le 12-08-2009 à 15:15:34  profilanswer
 

The matrix a écrit :

Par contre maintenant, je doit retrouver l'entier correspondant à la chaîne de trois hexa concatené.
J'ai donc une chaîne de caractères exprimant un nombre en base 16 et je veux un type entier long en base 10.
Et la question est, comment procéder... Comme d'hab, le premier sera le premier.


Ca me parait pas trop difficile en théorie après en ADA j'en sais rien du tout mais tu lis ton nombre hexa caractère par caractère, tu transforme chacun en nombre (1->1 , ... , A -> 10, ... F->15) et tu fais la somme des produits de chaque nombre avec 16^position du caractère. Sachant que le caractère tout à droite est à la position 0.

 

Je sais pas si ça répond à ton problème.

Message cité 1 fois
Message édité par Deamon le 12-08-2009 à 15:16:15
n°1914426
The matrix
Chacun fait ce qu'il en veut.
Posté le 12-08-2009 à 15:24:29  profilanswer
 

Deamon a écrit :


Ca me parait pas trop difficile en théorie après en ADA j'en sais rien du tout mais tu lis ton nombre hexa caractère par caractère, tu transforme chacun en nombre (1->1 , ... , A -> 10, ... F->15) et tu fais la somme des produits de chaque nombre avec 16^position du caractère. Sachant que le caractère tout à droite est à la position 0.
 
Je sais pas si ça répond à ton problème.


 
Ok, merci, donc reconvertir...
 
 
 
Pour le code ci-dessus, il n'est pas exacte ... voici la correction.
 

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;


 
 
J'ai terminé de se côté ci.


---------------
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
  Ada

  Coment concatener tois entier sous forme hexa ?

 

Sujets relatifs
Conversion d'un nombre hexa en floatConcatener champs en créant View
comment bloquer les spams sous forme kOphiiZGBaBtBTaxIJi-[VBA Excel] garder la mise en forme dans une textbox [RESOLU]
xml et php, mise en forme[résolu]Problème de vérification d'un entier
Trier un tableau d'entier avec ARRAYS.SORT();[Resolu]Problème de mise en forme de Fichier .txt
Upload d'un dossier en entier par HTTPUpload d'un dossier en entier par HTTP
Plus de sujets relatifs à : Coment concatener tois entier sous forme hexa ?


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