C++ builder formatage hex

C++ builder formatage hex - C++ - Programmation

Marsh Posté le 20-10-2004 à 09:59:18    

bonjour tout le monde  
 
Je suis débutant dans le C++.J'utilise depuis peu le C++ builder 6.
J'arrive pas à lire des données en hexadecimal à partir d'un Edit , ensuite pour la ranger dans un tableau toujours en hex.
 
En utilisant la fonction Add et un pointeur de type char je peux la lire et la ranger dans un tableau ,mais je perds le format d'origine c'est-à-dire  
en HEX.Je sais pas si j'étais clair vu que ça bouillonne dans ma tete sans résultat.
En gros je veux une fonction qui lit les données écrites dans une fenetre Edit(au format hex)
 ,puis elle les range dans un tableau (toujours en hex) et une autre fonction qui les lis depuis le tableau et les affiche dans un Memo (en hex)
 
J'ai vraiment besoin de votre aide.Peut-etre que ça vous parait trop simpliste et  
newbie mais pour moi c'est important.Je vous remercie d'avance.

Reply

Marsh Posté le 20-10-2004 à 09:59:18   

Reply

Marsh Posté le 20-10-2004 à 10:35:24    

Des données formatées en hex, je connais: "OxCACA" au lieu de "51914" par exemple.
 
Mais un tableau en hex, c'est quoi ? Une chaîne de caractères, un tableau d'entiers ?  

Reply

Marsh Posté le 20-10-2004 à 11:02:01    

L'hexadécimal c'est juste une manière de représenter un entier sous forme de texte, comme l'est le décimal.
En interne si c'est stocké comme un entier ça n'est pas plus de l'hexa que du décimal.
Pour la conversion hexa->entier tu peux faire
i = StrToInt("0x" + Edit1->Text);
ou
i = StrToInt("$" + Edit1->Text);
(s'il suit le système de Delphi)
Pour l'opération inverse il y a la fonction IntToHex.


Message édité par antp le 20-10-2004 à 11:02:17

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 20-10-2004 à 13:03:23    

Citation :

Mais un tableau en hex, c'est quoi ? Une chaîne de caractères, un tableau d'entiers ?


 
Il s'agit d'un tableau chaine de caractere.Mais  quand j'essaye de récuperer les données qui sont lues dans Edit1 et stockées dans un tableau (char)
je ne retrouve pas mes valeurs initiales.
 
Pour etre plus clair :
Edit1 : on ecris :FE34E7C90A
 
On utilise Add pour l'afficher dans Memo1,et un pointeur char * pointeur1 pour stocker nos chiffres.C'est là le debut de mes soucis.Comment les stocker par groupe de 2 c'est-à-dire  
comment avoir  pointeur1 []={0xFE,0x34,0xE7,0xC9,0x0A}.
2eme souci : comment lire ces données depuis le tableau pointeur1 et les afficher comme à l'origine dans Memo2 : FE34E7C90A.
 
Je vous remercie de vos reponses.c'est vraimant sympa.


Message édité par chesso le 20-10-2004 à 13:04:01
Reply

Marsh Posté le 20-10-2004 à 13:57:58    

Tu vas faire comment si t'as un 0x00 à stocker ? :D
Dans ton Edit tu tapes quoi ? Un entier ? (8 chiffres) si c'est le cas stocke-le dans un int plutôt que de jouer avec un tableau de char. En plus c'est du C ça, en C++ on a nettement plus pratique pour les tableaux...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 20-10-2004 à 14:34:02    

Citation :

Tu vas faire comment si t'as un 0x00 à stocker ? :D
Dans ton Edit tu tapes quoi ? Un entier ? (8 chiffres) si c'est le cas stocke-le dans un int plutôt que de jouer avec un tableau de char.


Tout à fait d'accord avec toi antp , mais s'il s'agit d'un nombre de 80 octets comment faire ?En plus si j'ai des opérations à programmer comme un xor du 1er byte avec 3eme byte,2eme et 4eme etc...je crois qu'un pointeur sur un tableau fera l'affaire.
Merci

Reply

Marsh Posté le 20-10-2004 à 14:54:55    

Un pointeur d'unsigned char (des bytes quoi) alors, mais il faut que tu stockes sa longueur quelque part...
Pour la conversion, pour chaque groupe de deux caractères tu peux utiliser StrToInt ou le faire à la main pour en faire un byte.
Mais plutôt que d'utiliser des pointeurs et de stocker la longueur du tableau à côté, un std::vector d'unsigned char serait plus propre.  
Ton tableau tu le fais avec quoi ? Un new ?


Message édité par antp le 20-10-2004 à 14:55:59

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 20-10-2004 à 15:12:36    

Citation :

Ton tableau tu le fais avec quoi ? Un new ?


 
Justement ma question était ça.
Et je veux utiliser un tableau pour pouvoir manipuler ses arguments à tout moment.
 
Pour resumer : Lecture du contenu de Edit1.
                stockage des valeurs par octet( 0xE4 par ex) dans un tableau.
                Operation arithmetiques sur les differents arguments du tableau.
                Affichage du résultat sur Memo1 ( en héxadecimal :ex : E3 54 67 F4 9C)
 
 je sais que ça vous parrait évident ,mais pour moi j'y arrive pas (je commence dans le C++ builder)
 
Merci pour votre aide.


Message édité par chesso le 20-10-2004 à 15:15:01
Reply

Marsh Posté le 20-10-2004 à 15:13:58    

Tu commances dans C++Builder ou tu commences dans le C++ tout court ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 20-10-2004 à 15:16:06    

Je commence dans le C++ ( mais en utilisant builder)
J'ai des connaissances dans le C et le VB.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed