IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Pascal Discussion :

[LG]de hex a ascii?


Sujet :

Langage Pascal

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 9
    Points : 6
    Points
    6
    Par défaut [LG]de hex a 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

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut

    Ca saoule à force !!

    a+

  3. #3
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    while Pos(' ', S) > 0 do
      Delete(S, Pos(' ', S), 1);
    Ensuite, on récupère les codes à deux chiffres :

    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;
    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 $.

    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+

  4. #4
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut
    Tu es trop gentil HDD34 !
    Ou alors tu n'as rien du tout à faire

    a+

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    merci beaucoup Hdd34
    mais je ne comprais pas la premiere alg s'il vous plais ecrire tous le program.
    merci

  6. #6
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    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 :

    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;
    A+

    PS: Je sais Wormful, je sais...

  7. #7
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    merci Hdd34

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Convertitr un code Hex to ascii
    Par yacinew dans le forum Langage
    Réponses: 5
    Dernier message: 05/08/2013, 03h01
  2. Hex To ASCII
    Par drvercetti dans le forum Unix
    Réponses: 22
    Dernier message: 22/04/2011, 11h58
  3. Hex BCD ASCII
    Par sali lala dans le forum C++
    Réponses: 3
    Dernier message: 11/12/2009, 11h01
  4. convertir hex vers ascii
    Par deny dans le forum Sécurité
    Réponses: 7
    Dernier message: 18/07/2008, 18h18
  5. Créer un tableau de correspondance Hex-Dec-Ascii
    Par maxredphenix dans le forum MATLAB
    Réponses: 6
    Dernier message: 17/05/2007, 09h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo