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

Delphi Discussion :

Conversion String vers Byte


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 2
    Par défaut Conversion String vers Byte
    Bonjour,

    Pour des besoins de cryptage j'ai besoin de travailler avec des octets (byte en anglais) mais les chaines à crypter sont évidemment disponibles initialement au format String.

    Existe-t'il une fonction "bête" permettant cette conversion ?

    Sinon, est-ce que les deux fonctions suivantes de conversion sont correctes ?

    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
    function CharToByte(chrLettre:Char):Byte;
    var bRes:Byte;
    begin 
         case ( Ord(chrLettre) - 48) of 
         0..9:bRes := Ord(chrLettre) - 48; 
         else 
             bRes := Ord(chrLettre) + 10 - 65; 
         end; 
         Result := bRes; 
    end;
     
    function ByteToChar(bLettre:Byte):string;
    var strRes:string;
    begin 
         case bLettre of
         0..9:strRes := IntToStr(bLettre); 
         else 
             strRes := Chr(65 + bLettre - 10); 
         end; 
         Result := strRes; 
    end;
    Merci d'avance

  2. #2
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    En fait tu travailles avec des chaînes en hexadécimal, non ?

    Si oui va voir IntToHex et StrToInt (pour cette dernière, rajouter '$' devant le nombre hexa en chaîne).

    Donc CharToByte devient StrToInt('$'+C) et ByteToChar devient IntToHex(B)[1].
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 2
    Par défaut
    En fait, non, mes chaînes sont initialement en format ascii classique.
    Mais effectivement, les fonctions que tu as indiquées devraient convenir, la conversion ascii -> hex string ne devant pas être trop compliquée...

  4. #4
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Si la on recherche la même représentation binaire du char et du byte, on peut
    1) soit utiliser la directive absolute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var c : char ; b : byte absolute c ;
    ou alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var b : byte ; c : char absolute b ;
    Dans ce cas, si on modifie c, b est modifié et réciproquement.

    1) soit utiliser la directive ord et char]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var b : byte ; c: char ;
    b:=ord(c) ;
    et
    c:=char(b) ;

  5. #5
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Salut

    Perso, j'utilise ces 2 fonctions :
    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
    {----------------------------------------------------------------}
    { CONVERSION STRING -> CODE HEXADECIMAL                          }
    {----------------------------------------------------------------}
    Function MyUrlEncode(Const st: String): String;
    Var x: Integer;
    Begin
      Result := '';
      If (st = '') Then Exit;
      For x := 1 To Length(st) Do
        Result := Result + IntToHex(Ord(st[x]), 2);
    End;
     
     
    {----------------------------------------------------------------}
    { CONVERSION CODE HEXADECIMAL -> STRING                          }
    {----------------------------------------------------------------}
    Function MyUrlDecode(Const st: String): String;
    Var x: Integer;
    Begin
      Result := '';
      If (Length(st) < 2) Then Exit;
      x := 1;
      Repeat
        Result := Result + Chr(Byte(StrToInt('$' + st[x] + st[x + 1])));
        x := x + 2;
      Until (x >= Length(st));
    End;

  6. #6
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    N'oubli pas d'ajouter le tag [Résolu] (bouton an bas de ce message)

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

Discussions similaires

  1. String vers byte[]
    Par EpOnYmE187 dans le forum Langage
    Réponses: 8
    Dernier message: 28/10/2011, 11h23
  2. Conversion String vers Byte
    Par nonos58 dans le forum Langage
    Réponses: 8
    Dernier message: 10/05/2011, 15h55
  3. Conversion String vers char
    Par benwit dans le forum Langage
    Réponses: 27
    Dernier message: 30/03/2007, 14h01
  4. conversion string vers une date
    Par fatati dans le forum C++Builder
    Réponses: 7
    Dernier message: 14/12/2006, 10h09
  5. conversion string vers int
    Par mathher dans le forum C++
    Réponses: 4
    Dernier message: 14/04/2006, 17h52

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