Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

MANIPULER DES CHAINES DE BITS FACILEMENT


Information sur la source

Description

Cliquez pour voir la capture en taille normale
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

  • // 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[]);
  • };
// 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[]);
};

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de tibur le 24/10/2006 10:47:51

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

signaler à un administrateur
Commentaire de yann_lo_san le 24/10/2006 15:47:56

Effectivement, j'avais pas utilisé ce header <bitset> 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. )

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

récupérer chaque bit d'une variable binaire [ par nixon666 ] BJJe me pause une question dans un programme de supervision utilisant le language C : pour ceux qui connaissent il s'agit du programme WinCC. Dans ce Acces a chaque bit d'un nombre binaire [ par djemmy ] Je dois obtenir, à partir de 4 nombres décimals(compris entre 0 et 15), les 4 nombre en binaire correspondants. De ces nombres binaires je dois en fab Conversion décimale => binaire [ par nicolas66 ] Bonsoir tlm,j'ai un pb un une ptite fonction pas très compliquée à mon avis :char * itob( int n ){ char * chaine; int i = 0; while ( n &gt; 0 ) { *(c Ecrire en binaire dans un fichier [ par pheno ] Bonjour Je dois réaliser un tp en C sur la compression avec la méthode Huffmanj ai construit l arbre et je récupère le chemin dans une chaine de carac chaine binaire en chaine hexa [ par thomas59553 ] bonjour a tous ;)je cherche une methode permettant de convertir une chaine binaire en une chaine hexale contenu de la chaine binaire est deja verifiee fichier binaire [ par stivi_45 ] Bonjour a tous, j'ai une petite question, je travaille sur un fichier binaire en c.Je stocke des informations dans ce fichier avec une structure : typ Structure des fichiers mp3 [ par mop666 ] salut, j aimerais faire un logiciel a lacon pour remplir les id3 de mes fichiers mp3...quelqu un sait il comment un fichier mp3 est organisé (entete d Probleme de sauvegarde d'une structure dans un fichier binaire [ par issoux ] Bonsoir, voila j'encode des etudiants + matricule + cotes&nbsp; (tous des champs d'une structure)les cotes et les matricules sont sauv&#233;s correcte conversion d'une chaine type "01001000" en binaire [ par brennyboy ] Bonjour &#224; tous !J'aimerais savoir comment passer d'une chaine de 8 caracteres contenant seulement de 0 et des 1, au chiffre d&#233;cimal correspo Ecriture Fichier Binaire bit a bit [ par nobpn ] Bonjour, Je souhaiterai ecrire dans un fichier bianire bit a bit. Je m'explique : il s'agit de compression : je recupere un tablo de int = les bits


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.