salut a tous
regarde a cette exemple
48 45 4c 4c 4f=en decimal72 69 76 76 79 et en fin =HELLO en hex
comment faire ca avec pascal from hex to ascii
salut a tous
regarde a cette exemple
48 45 4c 4c 4f=en decimal72 69 76 76 79 et en fin =HELLO en hex
comment faire ca avec pascal from hex to ascii
Mouais, on peut aider un peu, ça sort de l'ordinaire ce coup-ci Wormful !
Bon, alors prenons par exemple ta chaîne : S = '48 45 4c 4c 4f'
Comme l'hexa pour un octet est stocké sur deux caractères, aucun problème, on peut supprimer les espaces :
Ensuite, on récupère les codes à deux chiffres :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 while Pos(' ', S) > 0 do Delete(S, Pos(' ', S), 1);
Expliquons un peu le coup du $. La procédure Val permet de transformer une chaîne contenant des caractères numériques en nombre (entier ou réel). Mais Val peut aussi convertir une chaîne hexadécimale, à condition que le nombre commence par un signe $.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 var Num: Byte; Result, Temp: string; i, e: Integer; begin Num := Length(S) div 2; { Nombre de lettres } Result := ''; { Chaine résultat } for i := 1 to Num do begin Temp := Copy(S, 1, 2); { Les deux premiers caractères } Delete(S, 1, 2); { Suppression de ceux-ci dans la chaine source } Temp := '$' + Temp; { En Pascal, l'hexa commence par '$' } Val(Temp, Value, e); { Transformation chaîne => nombre } if e = 0 then Result := Result + Chr(Value); end; WriteLn(Result); end;
Le "e" est une variable entière qui indique la position d'une éventuelle erreur. Si e = 0, c'est qu'il n'y a pas d'erreur.
A+
Tu es trop gentil HDD34 !
Ou alors tu n'as rien du tout à faire
a+
merci beaucoup Hdd34
mais je ne comprais pas la premiere alg s'il vous plais ecrire tous le program.
merci![]()
Le premier bout de code sert à supprimer tous les espaces de la chaîne source : "Tant qu'il y a un espace dans la chaîne, on le supprime"
En fait, il suffit de joindre les deux bouts pour avoir le prog complet :
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 function HexToAscii(S: string): string; var Num: Byte; Result, Temp: string; i, e: Integer; begin while Pos(' ', S) > 0 do Delete(S, Pos(' ', S), 1); Result := ''; { Chaine résultat } for i := 1 to Length(S) div 2 do begin Temp := Copy(S, 1, 2); { Les deux premiers caractères } Delete(S, 1, 2); { Suppression de ceux-ci dans la chaine source } Temp := '$' + Temp; { En Pascal, l'hexa commence par '$' } Val(Temp, Value, e); { Transformation chaîne => nombre } if e = 0 then Result := Result + Chr(Value) else begin Result := 'Erreur'; Break; end; end; HexToAscii := Result; end;
PS: Je sais Wormful, je sais...
merci Hdd34![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager