je veux écrire une fonction qui permet de convertir un nombre décimal en un nombre binaire.
je veux écrire une fonction qui permet de convertir un nombre décimal en un nombre binaire.
Pourrais tu être plus explicite, par exemple le prototype de la fonction, parce sinon on peut considérer qu'un int est déjà sous forme binaire.
par exemple
si nb_decimal=7 je doit avoir nb_binaire = 111;
J'ai bien compris la conversion, mais plus précisement nb_decimal et nb_binaire sont de quels types, des int des string ?
Quelque chose comme cela ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 string translate(const int Value) { string ret = ""; unsigned int mask = 0x80000000; for(int boucle = 0; boucle != 32; boucle++, mask >>= 1) { if(mask > Value) continue; if( (mask & Value) == mask) strcat(buffer, "1"); else strcat(buffer, "0"); } return ret; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #include <bitset> #include <iostream> using namespace std; int main() { unsigned long nombre; cout << "Entrer le nombre : "; cin >> nombre; cout << endl; if (!cin) { cout << "Erreur" << endl; return EXIT_FAILURE; } bitset<32> binaire(nombre); cout << "En binaire : " << binaire.to_string() << endl; return EXIT_SUCCESS; }
Salut,
Heu, peut-on tout simplement savoir quel en est le but
Si le but est, effectivement de présenter la valeur en binaire, la solution de JolyLoic est diéale... Mais...
Il faut savoir que tout est de toutes façons maintenu en mémoire sous forme binaire, du coup... il faut savoir si cela vaut *réellement* la peine de s'enquiquiner à cela
pour le code de JolyLoic, est ce je peut l'utiliser comme une fonction qui retourne un tableau de caratère ou d'entiers
Cela n'aurait que peu d'intérêt de l'utiliser pour renvoyer un tableau d'entiers...
Par contre, juste après le to_string(), tu peux rajouter un c_str(), ce qui donne un code du genre de
Tu pourrait envisager une fonction du genre de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 bitset<32> binaire(nombre); char * binarystr=binaire.to_string().c_str();
Mais étant donné le peu de ligne que cela représente, est-ce que cela vaut réellement la peine de le faire en procédural, sachant que les endroits où tu en aura besoin risque d'être limités
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 const char* longtobinary(unsigned long int convert) { /* des fois qu'il y aurait plus de 4 octets dans un long int * idéalement, il faudrait d'ailleurs s'assurer de la taille des * caractères :P*/ bitset<size_of(unsigned long int)*8> binaire(convert); return binaire.to_str().c_str(); }
*Eventuellement*, tu pourrait envisager de créer une classe qui serait responsable de cela en orienté objet, voire, mieux, une classe template pour autoriser les différents type primitifs, mais, même là, cela me semble excessif
Attention, retour d'un pointeur sur des données qui n'existent plus !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 std::string longtobinary(unsigned long int convert) { bitset<sizeof(convert)*CHAR_BIT> binaire(convert); return binaire.to_string(); }
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