Comment convertir un Tableau d'Octets en hexadécimal chaîne dans visual c++?
Déclaration d'une méthode sont les suivants:
//some.h
void TDES_Decryption(BYTE *Data, BYTE *Key, BYTE *InitalVector, int Length);
Je suis à l'appel de cette méthode dans le code suivant:
//some.c
extern "C" __declspec(dllexport) bool _cdecl OnDecryption(LPCTSTR stringKSN, LPCTSTR BDK){
TDES_Decryption(m_Track1Buffer, m_cryptoKey, init_vector, len);
return m_Track1Buffer;
}
Où que le type de données de m_Track1Buffer
est BYTE m_Track1Buffer[1000];
Maintenant, je veux faire quelques changements dans la méthode ci-dessus, c'est à dire vouloir retourner le String in hex
au lieu de Byte
. Comment dois-je convertir ce m_Track1buffer
à Hex string
Qu'est-ce que
oui, c'est la chaîne hexadécimale
hexagonal
chaîne? Vouliez-vous dire hex
chaîne ici? Merci d'éditer et de les clarifier. Aussi, il est toujours utile de donner des exemples de l'entrée et la sortie attendue.oui, c'est la chaîne hexadécimale
OriginalL'auteur Amit Pal | 2012-12-27
Vous devez vous connecter pour publier un commentaire.
Ce code permet de convertir en tableau d'octets de taille fixe 100 en chaîne hexadécimale:
retour quelque chose comme
std::string(hexstr)
OriginalL'auteur mvp
Comme vous l'avez mentionné, c++, ici, est une réponse. Iomanip est utilisé pour stocker des entiers en format hexadecimal en stringstream.
setfill('0')
.J'avais aussi ajouter std::setw avoir il fonctionne à la sortie correctement à 2 chiffres pour chaque numéro. Alors maintenant, il ressemble à
ss << std::hex << std:.setfill ('0');
etss<<std::setw(2)<<static_cast<int>(data[i]);
Cette réponse serait parfait si les commentaires ont été mises en œuvre.
OriginalL'auteur 2r2w
Ici est un peu plus souple version (Utiliser des caractères en majuscules? Insérer des espaces entre les octets?) qui peut être utilisé à la plaine des tableaux et des différents types de conteneurs:
Exemple d'utilisation (simple tableau):
Exemple d'utilisation (
std::vector
):OriginalL'auteur Max Truxa
comment sur l'utilisation de la bibliothèque boost comme ceci (extrait de http://theboostcpplibraries.com/boost.algorithm ):
Je ne sais pas si vous avez downvoted en raison de coup de pouce, mais je pense que votre réponse est acceptable et ne devrait pas avoir un score négatif.
OriginalL'auteur serup
À l'aide de
stringstream
,sprintf
et d'autres fonctions dans la boucle n'est tout simplement pas le C++. C'est horrible pour les performances et ce genre de fonctions habituellement appelés un lot (à moins que vous êtes en train d'écrire des choses dans le journal).Voici une façon de le faire.
Écrit directement dans le
std::string
's de la mémoire tampon est découragé parce spécifiques std::string mise en œuvre peuvent se comporter différemment et cela ne marchera pas, mais nous sommes en évitant une copie de l'ensemble de la mémoire tampon de cette façon:OriginalL'auteur BJovke