Manipuler des chaines de bits facilement

Soyez le premier à donner votre avis sur cette source.

Vue 8 192 fois - Téléchargée 394 fois

Description

Initialiser des octets, mots et doubles mots en ayant un acces sur chaque bit individuels.
Cela peut servir à beaucoup de choses, moi c'est en faisant un algo de compression style RLE que j'en ai eu besoin.

Source / Exemple :


// Spécification

struct OCTET
{
 	unsigned msb : 1;
	unsigned _7  : 1;
	unsigned _6  : 1;
	unsigned _5  : 1;
	unsigned _4  : 1;
	unsigned _3  : 1;
	unsigned _2  : 1;
	unsigned lsb : 1;

	// Construction
	OCTET(unsigned char val = 0x00) {set_val_octet(val);}
	OCTET(bool, bool, bool, bool, bool, bool, bool, bool);
	OCTET(const OCTET&);

	// Manipule l'octet
	void set_val_octet(unsigned char);
	unsigned get_val_octet();

	// Pour affichage gui & console
	const char* set_buf_string(char[]);
	friend ostream& operator << (ostream&, const OCTET&);
};

// la structure mot

struct MOT
{
	OCTET hiByte;
	OCTET lowByte;

	MOT(unsigned short w = 0x0000) : hiByte(HIBYTE(w))
					, lowByte(LOBYTE(w)) {} 

	// Wrapper affichage (pour ne pas passer plusieurs fois par l'octet)
	const char* affiche_mot(char lpBuffer[]);
};

// la structure doubleMot 

struct DOUBLEMOT
{
	MOT hiWord;
	MOT lowWord;

	DOUBLEMOT(unsigned int d = 0x00000000) : hiWord(HIWORD(d))
						, lowWord(LOWORD(d)) {}

	// Wrapper affichage (pour ne pas passer plusieurs fois par le mot)
	const char* affiche_doublemot(char lpBuffer[]);
};

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
21
Effectivement, j'avais pas utilisé ce header avant, mais c'est exactement ce que je cherchais. Merci pour l'info.
(ps : Je ne suis pas un pro du c++, c'est pour ça que j'aime bien ce site. )
Messages postés
101
Date d'inscription
samedi 9 février 2002
Statut
Membre
Dernière intervention
5 mai 2009

Hello
Tu peux aussi t'interesser à std::bitset de la STL.
(http://www.sgi.com/tech/stl/bitset.html)
tib.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.