Manipuler des chaines de bits facilement

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

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.