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
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Partager