KioskeaKioskeaCommentCaMarcheInscrivez-vous, c'est gratuit !
Samedi 17 mai 2008 - 07:53:28

Fonction C++ de conversion en héxadécimal

Rechercher : dans
Fonction C++ de conversion en héxadécimal
par bouazza
 Fil de Discussions
Statut : Résolu
samedi 21 janvier 2006 à 13:53:46
Salut tous , peut quelqu'un de vous me dire quelle est la fonction C++ de convertion en héxadécimal ? merci pour toute réponse postée !
Répondre à bouazza  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par hamzafes, le samedi 21 janvier 2006 à 17:37:34 Fil de Discussions
Salam,
Je pense que le code ci-dessous peut vous aider:

#include<stdio.h>

void main()
{
char ch[33];
int i;
printf("\nDecimale\tHexadecimale\n----------------------------");
for(i=7;i<20;i++)
{
sprintf(ch,"%x",i);
printf("\n%d\t :\t%s",i,ch);
}

}

Allah mo3ine
Répondre à hamzafes

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par bouazza, le samedi 21 janvier 2006 à 19:09:06 Fil de Discussions
Merci , mais je voulait pas afficher le resultat dans l'écran mais le stocker dans une variable !
Répondre à bouazza

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par lami20j, le samedi 21 janvier 2006 à 19:21:44 Fil de Discussions
Salut,

C'est exactement ce que fait sprintf.

sprintf - ecrit un texte formaté dans une chaîne à la place d'écran.
sprintf(Var,"Resultat =%X",i);
Le résultat est stocké dans la variable Var

 sprintf(ch,"%x",i); 
donc hamzafes a stocké le résultat dans la variable ch
Répondre à lami20j

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par kilian, le samedi 21 janvier 2006 à 19:27:44 Fil de Discussions
Oui mais il veux convertir "1a' en 0x1a
C'est le contraire que fait sprintf()
Répondre à kilian

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par kilian, le samedi 21 janvier 2006 à 19:22:59 Fil de Discussions
Salut,

Tu peux te faire un truc comme ça:
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
Répondre à kilian

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par bouazza, le samedi 21 janvier 2006 à 19:25:53 Fil de Discussions
Merci pour vos réponses , je vais utiliser sprintf .
Répondre à bouazza

7


  • 2
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
Par Aghaster, le dimanche 22 janvier 2006 à 06:14:13 Fil de Discussions
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.

#include <iostream>

int main()
{
std::cout << "Entre un nombre: ";
int nb;
std::cin >> nb;
std::cout << "Voici ce nombre en hexadecimal: "
<< std::hex << nb << std::endl;
}

C'est aussi simple que ça, tu n'as qu'a include std::hex dans un cout, et les nombres vont être affichés sous représentation hexadécimale. Beaucoup BEAUCOUP plus rapide qu'une conversion manuele. Quoi faire si tu assigner une valeur hexadécimale à une variable dans ton programme?

int x = 0xFF;

Tu n'as qu'à ajouter 0x avant le nombre, c'est tout. Si tu veux que je t'écrive une fonction pour convertir soi-meme de décimal à hexadécimal dit le moi, jvais ten écrire une assez rapide.

-Aghaster

www.planetcpp.info
Répondre à Aghaster

8


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
Par lami20j, le dimanche 22 janvier 2006 à 10:51:01 Fil de Discussions
Tu as raison, je suis parti de la reponse de hamzafes, je n'ai même pas fait attention que la question c'était pour C++.

lami20j
Répondre à lami20j

17


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
Par sil vous plair aidez moi, le lundi 5 novembre 2007 à 03:24:03 Fil de Discussions
Bonjour, ji un grand problem et je tecri pour de te demander de maider,tu pe menvoyer un programme en c qui converti la base decimale en base binaire et octale et hexadecimale et vis versa sil vous plait aide moi voila mon msn star_1987_4@hotmail.com
Répondre à sil vous plair aidez moi

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par bouazza, le dimanche 22 janvier 2006 à 11:21:27 Fil de Discussions
merci Aghaster , j'avais oublié que je programmais en C++ :P .
Répondre à bouazza

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par bouazza, le dimanche 22 janvier 2006 à 11:27:15 Fil de Discussions
Mais y a un probleme std::hex ne convertit qu'une variable int et pas un string , ce que je voulait c'est convertir un std::string !
Répondre à bouazza

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Aghaster, le dimanche 22 janvier 2006 à 19:28:20 Fil de Discussions
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:

#include <iostream>
#include <sstream>
#include <string>
#include <cmath>

int main()
{
std::cout << "Entre un nombre: ";
std::string nb;
std::cin >> nb;

// On converti de std::string à integer
int temp = 0;
int len = nb.length();
for(int i = 0; i < len; i++)
{
temp += (nb[i] - 48) * pow((float)10,len-i-1);
}

// Et on reconverti en std::string sous forme hexadécimale!
std::stringstream ss;
ss << std::hex << temp;
ss >> nb;

std::cout << nb << std::endl; // Voilà, c'est fait.
}

Amuse-toi bien! Hésites pas si t'as d'autres questions.

-Aghaster
www.planetcpp.info
Répondre à Aghaster

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par bouazza, le lundi 23 janvier 2006 à 10:24:46 Fil de Discussions
Merci .
Répondre à bouazza

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par DarKPhoeniX, le samedi 25 février 2006 à 14:28:53 Fil de Discussions
Pourquoi n'utilises tu pas un istringstream pour ta fonction de conversion de string a decimal?...
Répondre à DarKPhoeniX

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par bouazza, le samedi 25 février 2006 à 14:40:16 Fil de Discussions
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
Répondre à bouazza

19


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par hsssss, le dimanche 13 avril 2008 à 20:46:29 Fil de Discussions 
comment en version 6.0
Répondre à hsssss

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par nesssta, le vendredi 26 janvier 2007 à 21:51:59 Fil de Discussions
ce programme ne marche pas à tous les coups:
d'abord la taille de la chaine en hexa ainsi convertie est limitée
de plus ça ne permet pas de convertir une chaine contenant des espaces, dès que l'algorithme capte un espace il s'arrete et le reste de la chaine n'est pas converti.
Comment faire pour résoudre ce problème. Aidez-moi SVP. Si vous avez une quelconque idée la dessus n'hésitez pas à me répondre, je vous seraai très reconnaissante.
Merci d'avance.
Répondre à nesssta

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par Astraya, le lundi 30 avril 2007 à 20:31:14 Fil de Discussions
Juste une présition : les cout et autre flux sont ce kil ya de plus lent.... si tu veut qqhc de rapide utilise les sprintf()
Répondre à Astraya

18


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par jamlavie, le jeudi 29 novembre 2007 à 20:15:52 Fil de Discussions
slt a tou je cherche 1 algo qui fais la conversation de binaire vers les autre base au le contraire "stp j ve 1 algo ki ç écrit en pascal " é merci a la avonce
Répondre à jamlavie
Discussions pertinentes trouvées dans le forum
26/01 20h30Fonction C++ de conversion en héxadécimalProgrammation27/01 22h424
17/01 21h24Conversion DECIMALE >> Hexadecimale urgentWindows19/01 15h054
18/12 15h24conversion Binaire/Hexadécimal en langage CProgrammation11/01 16h186
Plus de discussions sur « Fonction C++ de conversion en héxadécimal » Discussion en cours Discussion fermée Problème résolu
Répondre
Titre du message :
Votre pseudo:
Votre email :
Message: 
  •  
  •  
Options: Recevoir les réponses par mail.
 

Aide