|
|
|
|
Fonction C++ de conversion en héxadécimal
Dernière réponse le 24 avr 2009 à 13:26:12 bouazza, le 21 jan 2006 à 13:53:46Salut,
int convert(char caractere)
{
char bidule[]={'0', '1', '2', '3', '4', '5', '6', '7', '8', '9','a','b','c','d','e','f'};
int i;
for (i=0;i<sizeof(bidule);i++)
{
if (caractere == bidule[i]){
return i;
}
}
//On a pas trouvé de correspondance
return -1;
}
Et s'il faut convertir 'a5' en 0xa5 Il faut t'arranger pour faire: hex= (convert('a') << 4) + convert('5'); Car pour le a, qui correspond à 10 *(16^1), tu peux aussi faire 10 << 4 |
Inutile de faire la conversion à la main! Vous vous donnez bien trop de mal pour rien. Premier commentaire : C'est du C++! N'utilisez pas les vieilles fonctions C. #include <stdio.h> devrait être #include <cstdio>. Si une librairie standard a une extension .h, c'est que c'est une vieille libraire C. Les librairies standard C++ n'ont tout simplement pas d'extension. 2) Pourquoi utiliser printf? encore là c'est pour le C. Oui ça marche en C++ mais c'est une mauvaise habitude. std::cout existe pour le C++. En plus, la librairie standard inclu déjà quelque chose qui va grandement te simplifier la vie... on appelle ça std::hex.
|
Ah, ben alors pas de problème. J't'ai écrit un ptit prog qui te converti une std::string de décimale à hexadécimale. Améliore-le comme tu veux (j'ai pas tenu compte de si on entrait des lettres ou des caractères autre que des nombres). C'est relativement rapide, alors le voici:
|
Voici la fonction que j'utilise maintenant :
std::string string_hex(std::string buffer){ // converte un string en un string héxadécimal
std::ostringstream oss; //initialise un string stream qui stock la sortie de std::hex
for (std::string::const_iterator i = buffer.begin(); i != buffer.end(); ++i) //fait une boucle caractére par caractére
{
oss << std::hex << static_cast<int>(*i); //stock la sortie de std::hex dans oss
}
return(oss.str());
}
et ça fonctionne nickel !!! Merci pour vos réponses |
Ce programme ne marche pas à tous les coups:
|

