Bonjour, j'utilise c++builder et j'aimerai faire un fonction qui permet de transformer un texte en hex , comment faire ?
merci d'avance!
Bonjour, j'utilise c++builder et j'aimerai faire un fonction qui permet de transformer un texte en hex , comment faire ?
merci d'avance!
Bonjour,
Tu as la fonction IntToHex qui affiche sous forme hexa.
Exemple:
A essayer...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for(int i=1:i< Memo->Text.Length();i++) Memo1->Text+=IntToHex(Memo->Text[i],2);
L'accès à la propriété Text est un peu lent, alors avec une boucle !
L'utilisation de += est aussi dangereux car contourne le Setter de la property Text et donc ne provoque pas les appels au API Windows qui gère le TMemo
Au final, += ne fait absolument rien (cela modifie le retour du Getter de Text mais pas Text)
Imaginons que Text est une String, alors Text s'allonge à chaque +=, existe-t-il un risque de provoquer une boucle infini puis Length() évoluerait de façon exponentiel
Pour du Ansi Char, il existe une fonction toute prête BinToHex que l'on peut encapsuler ainsi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 AnsiString AnsiTextToHexaText(const AnsiString Text) { AnsiString Hexa; Hexa.SetLength(Text.Length() * 2); // Allocation mémoire BinToHex(Text.c_str(), Hexa.c_str(), Text.Length()); // remplissage return Hexa; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 AnsiString WideTextToHexaText(const UnicodeString Text) { AnsiString Hexa; // TBytes TextBytes = Text.BytesOf(); // Conversion selon le TEncoding par défaut en Tableau d'Octet, risque de perte de l'Unicode vers Ansi TBytes TextBytes = WideBytesOf(Text); // Conversion UTF16 en Tableau d'Octet, un caractère = 2 octets ou 4 octets selon la page de langue Hexa.SetLength(TextBytes.Length * 2); // Allocation mémoire BinToHex(&TextBytes[0], Hexa.c_str(), TextBytes.Length); // remplissage return Hexa; }
Je te propose aussi HexToStream et StreamToHex écrites en Delphi
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