IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

convertir chaine de caract�re binaire en chaine de caract�re d�cimale


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 14
    Par d�faut convertir chaine de caract�re binaire en chaine de caract�re d�cimale
    Bonjour,

    comme l'indique le sujet de mon post je souhaiterais convertir une chaine de caract�re binaire en chaine de caract�re d�cimale de sorte � ce que :

    "0000000000000010" devienne "2"

    Je souhaiterais cependant ne pas passer par des conversions de cette chaine binaire en nombre entier puis en chaine puisque le but �tant de pouvoir repr�senter des nombres extr�mement grands (500000 bits par exemple...)

    Je peine � utiliser les stringstream avec les diff�rents flags, si vous pouviez me donner un coup de main,

    merci d'avance,
    jav974

  2. #2
    Membre exp�riment� Avatar de Nogane
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    241
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 241
    Par d�faut
    Bonjour,
    Puisqu'il s'agit d'une transformation chaine vers chaine, la meilleur solution qui me vient pour l'instant est l�impl�mentation d'un boost::iostreams::filter, et plus sp�cialement d'un SymmetricFilter:
    http://www.boost.org/doc/libs/1_51_0...doc/index.html

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 14
    Par d�faut
    Merci Nogane,

    mais je souhaiterais �viter d'avoir � utiliser boost pour faire ce travail, n'y aurait-il pas une fa�on maison de le faire ?

  4. #4
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    @Nogane, il faut m'expliquer pourquoi plus en detail, parce que moi je ne vois pas.

    @jav974, dans la transformation de binaire en decimal, chaque chiffre decimal du resultat d�pend de tous les chiffres de la donnee. Si tu veux reellement faire ca sur 500000 bits, je te conseillerais l'utilisation d'une lib comme gmp.

  5. #5
    Membre exp�riment� Avatar de Nogane
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    241
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 241
    Par d�faut
    Citation Envoy� par Jean-Marc.Bourguet Voir le message
    @Nogane, il faut m'expliquer pourquoi plus en detail, parce que moi je ne vois pas.

    @jav974, dans la transformation de binaire en decimal, chaque chiffre decimal du resultat d�pend de tous les chiffres de la donnee. Si tu veux reellement faire ca sur 500000 bits, je te conseillerais l'utilisation d'une lib comme gmp.
    arf, je n'avais pas vraiment r�alis� la complexit� de la chose... Bah du coup j'ai pas d'id�e l�, � par gmp.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 14
    Par d�faut
    Je suis en train de coder une sorte de gmp pour ainsi dire, du coup si je pouvais ne pas passer par la ^^'

    :/

  7. #7
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    Je comprends pas ton objectif. Si tu veux initialiser un objet de ta classe � partir d'une repr�sentation binaire, c'est trivial si ta repr�sentation interne est binaire. Si elle ne l'est pas, tu multiplies et tu additionnes.

    (En passant, si tu as r�ellement des nombres de 500000 bits � manipuler et que tu as besoin de ce genre de conseil, mon conseil c'est d'utiliser gmp, tu ne vas pas arriver � avoir qqch d'efficace.)

  8. #8
    Membre �m�rite

    Profil pro
    Inscrit en
    D�cembre 2008
    Messages
    533
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 533
    Par d�faut
    Peut-�tre std::bitset, qui peut g�rer simplement ce type de conversion :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    std::bitset<32> bs(std::string("0000000000000000000010")); //32bits
    std::cout << bs.to_ulong() << std::endl; // affiche '2'
    Par contre, oui, 500000bits �a risque de faire beaucoup.

  9. #9
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    Citation Envoy� par cob59 Voir le message
    Par contre, oui, 500000bits �a risque de faire beaucoup
    C'est juste jusque 10.24^150000.

Discussions similaires

  1. R�ponses: 5
    Dernier message: 11/11/2011, 19h55
  2. Convertir un entier en binaire (chaine)
    Par hpalpha dans le forum Contribuez
    R�ponses: 0
    Dernier message: 13/02/2011, 17h20
  3. R�ponses: 1
    Dernier message: 01/02/2008, 17h03
  4. R�ponses: 8
    Dernier message: 08/06/2004, 01h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo