Conversion de caracteres ascii en chiffres hexa

Soyez le premier à donner votre avis sur cette source.

Snippet vu 23 727 fois - Téléchargée 38 fois

Contenu du snippet

ce simple code convertit des caracteres ascii en chiffres hexa

Source / Exemple :


{==============================================================================}
{ FUNCTION  : RESULTSTRING = asciitohex(string)                                }
{==============================================================================}

function asciitohex(rep:string):string;

 Var Li, i : Integer;
  Begin
Li := Length(rep); 
If Li = 0 Then Exit;

For i := 1 to Li Do
      Begin
Result:=Result+IntToHex(Ord(rep[i]),2)+' ';
      End;
End;

A voir également

Ajouter un commentaire

Commentaires

Messages postés
16
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
12 mars 2006

J'aurais pour ma prt juste voulu savoir de quel type etait result?
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
29
C'est un réflexe à prendre que d'initialiser le résultat d'une fonction dès le début.
Tout à fait d'accord avec Nono40.
Pour te montrer notre bonne volonté, je te livre le code qui permet d'effectuer l'opération inverse :

function HexToAscii(s: string): string;
var
i: integer;
begin
Result := EmptyStr;
for i := 1 to Length(S) do
begin
if ((i mod 2) = 1) then
Result := Result + Chr(StrToInt('0x' + Copy(S, i, 2)));
end;
end;
Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
1
C'est une chance que Delphi initialise les chaine à vide au moment de leur création ( les chaines sont un exception ). Sinon cette boucle commencerait sur une chaine aléatoire.( ce serait le cas d'ailleurs pour un result de type Integer ).
Il vaut mieux donc en être sur et placer Result:='' avant la boucle.
Il n'est pas nécessaire de tester le cas 0 car For i:=1 to 0 ne fait rien contrairement au Basic :
Result:=''
for i := 1 to Length(rep) do Result:=Result+IntToHex(Ord(rep[i]),2)+' ';

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.