Conversion byte<-> hexa [Résolu]

elementalord 26 Messages postés mercredi 25 mai 2005Date d'inscription 10 juin 2005 Dernière intervention - 1 juin 2005 à 11:11 - Dernière réponse : elementalord 26 Messages postés mercredi 25 mai 2005Date d'inscription 10 juin 2005 Dernière intervention
- 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).
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
cs_Kenavo 759 Messages postés vendredi 21 mars 2003Date d'inscription 1 octobre 2009 Dernière intervention - 1 juin 2005 à 16:52
3
Merci
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 ]

Merci cs_Kenavo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_Kenavo
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 1 juin 2005 à 13:50
0
Merci
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.
Commenter la réponse de jlen100
cs_Kenavo 759 Messages postés vendredi 21 mars 2003Date d'inscription 1 octobre 2009 Dernière intervention - 1 juin 2005 à 13:53
0
Merci
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 ]
Commenter la réponse de cs_Kenavo
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 1 juin 2005 à 14:08
0
Merci
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
Commenter la réponse de jlen100
elementalord 26 Messages postés mercredi 25 mai 2005Date d'inscription 10 juin 2005 Dernière intervention - 1 juin 2005 à 14:21
0
Merci
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?
Commenter la réponse de elementalord
jlen100 1651 Messages postés samedi 10 juillet 2004Date d'inscription 25 juillet 2014 Dernière intervention - 1 juin 2005 à 14:33
0
Merci
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
Commenter la réponse de jlen100
elementalord 26 Messages postés mercredi 25 mai 2005Date d'inscription 10 juin 2005 Dernière intervention - 1 juin 2005 à 14:56
0
Merci
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?
Commenter la réponse de elementalord
elementalord 26 Messages postés mercredi 25 mai 2005Date d'inscription 10 juin 2005 Dernière intervention - 1 juin 2005 à 17:35
0
Merci
Merci beaucoup celà fonctionne bien et désolé la façon comment j'ecri mes mots la prochaine fois je ferai attention
Commenter la réponse de elementalord

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.