Conversion byte<-> hexa

[Résolu]
Signaler
Messages postés
26
Date d'inscription
mercredi 25 mai 2005
Statut
Membre
Dernière intervention
10 juin 2005
-
Messages postés
26
Date d'inscription
mercredi 25 mai 2005
Statut
Membre
Dernière intervention
10 juin 2005
-
Bonjour à tous,
mon problème est le suivant:
j'ai créé un fichier typé comme suit:
Type
TrecData = Record
Datteheur : TDateTime;
etat : string[2];
omc : byte;
country : byte;
common : word;
system : word;
net : word;
alarme : byte;
rssi : byte;
reserve : byte;
end;
var
Form1 : TForm1;


recFich : file of TrecData;<---mon fichier binaire typé
data : TrecData;
j'ai converti une chaine de caractere en integer avec strtoint et jai ensuite converti le int en hexa é ensuite g reconverti en int ,en gro g fai sa:
var
int : integer;
str : string;
begin
int := strtoint(str);
data.system := strtoint ( inttohex (int,4) );
le probleme est que comme le data.systeme est en word ,comme g converti de l'hexa en integer et si j'essai d'afficher la valeur du data.system il ne peu pa lire les lettre du code hexa ce qu'il me semble
Je voudrais savoir lorsqu'on essai d'ecrir dans un fichier avec ce que ce que j'ai tapé sa passe?
Si non comment yorai til un moyen ppour que j'ecri dans un fichier du code hexa avec le fichier typé sue j'ai creer(plu precisement les variable ki sont declaré en byte et word).

8 réponses

Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
4
Si str
est une chaine hexa genre '1F7F' , tu peux écrire datasystem :=
StrToInt('$'+str)


Si str est
une chaine
hexa genre
'$1F7F' , tu peux écrire datasystem := StrToInt(str)


Si str est
une chaine
hexa genre
'0x1F7F' , tu peux écrire datasystem :=
StrToInt('$'+copy(str,2,length(str))

etc ...



Et puis si tu veux qu'on puisse bien comprendre ce que tu souhaite,
évite ce style SMS de m








Ken@vo

<hr size="2" width="100%">Code, Code, Codec !




http://www.pourflorenceethussein.org/

[%3C/body ]
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
salut

si tu est sur que int reste dans l'interval word 0..FFFFh le plus simple est d'ecrire directement data.system :=int;

bonne prog.
Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
4
Salut,





La ligne data.system := strtoint ( inttohex (int,4) ); va
te poser un problème si la représentation hexa de ton entier contient
les caractètes A,B,C,D,E, ou F . Et au mieux, une drôle de conversion :


Si str contient '100' alors int prend la valeur 100 en décimal soit 64 en héxa (noté $64 ou 64H ou 0x64)

inttohex (int,4) te renvoie donc '0064', et data. System prend au final la valeur 64 (décimal) soit $40 (hexadécimal)

La forme correcte est :

data.system := strtoint ('$'+ inttohex (int,4) );

Le truc, c'est que ça ne sert à rien ! Tu peux faire directement : data.system : = strtoint(str);



Data.Sytem est un word tu peux lui donner toutes les valeurs numériques entre 0 et 65535




Ken@vo

<hr size="2" width="100%">Code, Code, Codec !




http://www.pourflorenceethussein.org/

[%3C/body ]
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
d'accord avec toi kenavo on peut se passer de la variable intermediaire
sauf qu'il sera plus difficilede traiter eventuellement
l'interval de validite
Messages postés
26
Date d'inscription
mercredi 25 mai 2005
Statut
Membre
Dernière intervention
10 juin 2005
1
ok mais si je tape data.system := strtoint(str) est ce que celà pourrait écrir dans mon fichier binaire les données ke je v recuperer dans str ki sont en hexa?
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
attention!!

strtoint ne convertit pas de l'hexa en binaire mais du texte( chiffres
0..9 a l'exclusion des lettres) en binaire pour convertir de l'hexa en
binaire il faut utiliser la Hextobin
Messages postés
26
Date d'inscription
mercredi 25 mai 2005
Statut
Membre
Dernière intervention
10 juin 2005
1
euh oui je c mai je croi ke je me sui mal exprimer en fait c un fichier kelconk .txt ou .dat ou .bin...ou je veu ecrir d donnée en hexa.mais kom j'ai : data.system en word et ke g str en hexa alor je c pa sil va ecrir les lettres de ce code ds le fichier ou l'exclur ou meme mafficher une erreur kom koi les lettre du code hexa ne sont pas des entiers un truc du genre...donc si quelqu'un connai comment je peu ecrir de l'hexa dans mon fichier typé alor kil ya un byte pourait il maider?
Messages postés
26
Date d'inscription
mercredi 25 mai 2005
Statut
Membre
Dernière intervention
10 juin 2005
1
Merci beaucoup celà fonctionne bien et désolé la façon comment j'ecri mes mots la prochaine fois je ferai attention