Conversion byte<-> hexa

Résolu
elementalord Messages postés 26 Date d'inscription mercredi 25 mai 2005 Statut Membre Dernière intervention 10 juin 2005 - 1 juin 2005 à 11:11
elementalord Messages postés 26 Date d'inscription mercredi 25 mai 2005 Statut Membre Dernière intervention 10 juin 2005 - 1 juin 2005 à 17:35
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

cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
1 juin 2005 à 16:52
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 ]
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
1 juin 2005 à 13:50
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.
0
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
1 juin 2005 à 13:53
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 ]
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
1 juin 2005 à 14:08
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
elementalord Messages postés 26 Date d'inscription mercredi 25 mai 2005 Statut Membre Dernière intervention 10 juin 2005 1
1 juin 2005 à 14:21
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?
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
1 juin 2005 à 14:33
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
0
elementalord Messages postés 26 Date d'inscription mercredi 25 mai 2005 Statut Membre Dernière intervention 10 juin 2005 1
1 juin 2005 à 14:56
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?
0
elementalord Messages postés 26 Date d'inscription mercredi 25 mai 2005 Statut Membre Dernière intervention 10 juin 2005 1
1 juin 2005 à 17:35
Merci beaucoup celà fonctionne bien et désolé la façon comment j'ecri mes mots la prochaine fois je ferai attention
0
Rejoignez-nous