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 :

Cr�er un BYTE � partir de 8 bits !!


Sujet :

C++

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    145
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 145
    Par d�faut Cr�er un BYTE � partir de 8 bits !!
    Salut � tous,

    Voila, j'ai un tableau de 7 int avec des donn�es binaires (0 ou 1). Je souhaiterais cr�er une variable BYTE (unsigned char 0 <> 255) � partir de ces 8 bits ?

    merci d'avance

  2. #2
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Par d�faut
    Salut,

    Tu peut faire comme ca je pense:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    monResultByte = 0;
    for(i=0;i<8;i++)
    {
    if(tab[i]==1)
    monResultByte += 1<<i;
    }
    En fait tu fais un decalage a chaque fois que t'as 1 et rien si t'as 0, j'ai pas tester par contre.

  3. #3
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut
    Une m�thode un peu plus C++, test�e :

    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
    20
    21
    22
    23
    24
    25
    26
    #include <iostream>
    #include <bitset>
    #include <string>
    #include <sstream>
    #include <vector>
     
    int main()
    {
    	std::vector<int> vecteur;
    	vecteur.push_back(1);
    	vecteur.push_back(0);
    	vecteur.push_back(0);
    	vecteur.push_back(1);
    	vecteur.push_back(1);
    	vecteur.push_back(0);
    	vecteur.push_back(1);
    	vecteur.push_back(0);
     
    	std::ostringstream oss;
    	std::copy(vecteur.begin(), vecteur.end(), std::ostream_iterator<int>(oss) );
     
    	std::bitset<8> octet (oss.str() );
    	unsigned char value = octet.to_ulong(); // 154
     
    	return 0;
    }
    Hope it helps !

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    145
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 145
    Par d�faut
    Ouah, eh bien, je viens de trouver en m�me tps une autre m�thode :

    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
    20
    21
    22
    23
    int bin2dec(char *bin)
    {
    	int dec = 0;
    	while(*bin)
    	{
    		dec = (2 * dec) + (*bin - '0');
    		bin++;
    	}
    	return dec;
    } 
    	char binaire[7];
    	char str[10];
    	int decimal = 0;
    for(int i = 0; i<56; i++)
    	{
    		strcat(binaire,itoa(bit_cle[i],str,10));
    		if ( (i+1) % 8 == 0 )
    		{
    			decimal = bin2dec(binaire);
    			final.push_back((BYTE)decimal);
    			binaire[0] = '\0';	
    		}
    	}

  5. #5
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut
    LOL
    Tu n'as visiblement ici qu'une partie du code, car y'a plein de variables non d�clar�es !

    Ma solution tient en 4 lignes! et fonctionne...
    Enfin, tu fais ce que tu veux !

  6. #6
    Membre chevronn�

    Inscrit en
    Ao�t 2007
    Messages
    300
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2007
    Messages : 300
    Par d�faut
    d�sol� mais... c'est une blague ou quoi??
    Le jeu c'est de trouver de pire en pire � chaque r�ponse, c'est �a?
    La r�ponse de Kacceda est propre, mais c'est vrai qu'on peut faire bien grave en for�ant.
    Nouveau jeu concours:afficher un bool d�fini par 0 ou 1 sous forme "0" ou "1".
    Bon je commence:
    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
    template<bool b, class X, class Y>
    struct if_ {
    typedef X type;
    };
    template<class X, class Y>
    struct if_<false,X,Y> {
    typedef Y type;
    };
    struct AfficheZero
    {
    AfficheZero ( void ) { cout << "0"; }
    };
    struct AfficheUn
    {
    AfficheUn( void ) { cout << "1"; }
    };
     
    bool t = 0;
    if_<t,AfficheZero,AfficheUn>::type Avirer;
    Je crois que �a marche... pas test�
    A votre tour!

    Edit: d�sol� fait un edit pour rire... pas prendre au s�rieux, pas se vexer... Juste une r�action � chaud devant le d�lire direct parti pour l'orbite

  7. #7
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut
    La fonction de Kacceda est propre, je n'ai pas dit le contraire, elle prend juste en compte le fait que le tableau est un tableau C.
    J'ai juste �crit une autre possibilit� en C++, c'est tout...

  8. #8
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    5
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    monResultByte = 0;
    for(i=0;i<8;i++)
    {
    if(tab[i]==1)
    monResultByte += 1<<i;
    }
    Au passage... le test prendra plus de temps que de traiter la valeur elle meme... donc autant faire ca
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    monResultByte = 0;
    for(i=0;i<8;i++)
    {
        monResultByte |= tab[i]<<i;
    }
    Bon, ok, je chippotte, pas taper

    Quand � l'autre solution "C++"... ouch !!

  9. #9
    Membre confirm�
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    145
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 145
    Par d�faut
    Merci � tous pour vos r�ponses. D'un cot� vu que je suis un peu nul, je suis content d'avoir trouv� ma solution bourrin tt seul, m�me si les votres sont plus clean !!

    A bientot

  10. #10
    Membre �prouv�
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par d�faut
    poukill, � quoi sert ton vector ? Tu ne peux pas rentrer directement les valeurs dans le bitset ?

  11. #11
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 155
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 155
    Par d�faut
    Citation Envoy� par NiamorH Voir le message
    poukill, � quoi sert ton vector ? Tu ne peux pas rentrer directement les valeurs dans le bitset ?
    Ben l'�nonc� pr�cise qu'il dispose d'un tableau de int. Alors j'ai cr�� un vector<int>, pour faire plus C++ !

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    D�cembre 2007
    Messages
    82
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 82
    Par d�faut
    Il y a des jours o� lorsque je vois les solutions propos�es je me demande si je programme des applications depuis 25 ans ou si je l'ai r�v� ?

    La solution de 'ZeGlobox' est �videment la seule qui soit correcte, d'un point de vue pratique en tout cas, universitaire ? je ne sais pas.

    N�anmoins, en amont, pourquoi stocker des informations binaires dans un tableau d'entiers ? autant mettre les 8 informations directement dans l'entier final !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Cr�er une image � partir d'un tableau de bytes
    Par rockley dans le forum Collection et Stream
    R�ponses: 5
    Dernier message: 21/12/2011, 13h59
  2. Comment cr�er un File � partir d'un byte[]
    Par hacksi dans le forum Langage
    R�ponses: 8
    Dernier message: 07/03/2008, 16h26
  3. [C#] Cr�er un document � partir de mon prog
    Par matech dans le forum Windows Forms
    R�ponses: 8
    Dernier message: 03/03/2005, 16h27
  4. Cr�er une video � partir d'images
    Par Akta3d dans le forum DirectX
    R�ponses: 5
    Dernier message: 13/07/2004, 14h46
  5. Comment cr�er un bitmap � partir d'un panel ?
    Par calou34 dans le forum Composants VCL
    R�ponses: 3
    Dernier message: 19/08/2003, 15h06

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