[vc++] codage et décodage par décalage de bit

0/5 (1 avis)

Snippet vu 4 984 fois - Téléchargée 33 fois

Contenu du snippet

Ce code contient un encodeur et un décodeur. Ce n'est pas très évolué, mais les prochains le seront bien plus.

Source / Exemple :


#include <stdlib.h>
#include <fstream>
#include <iostream>

#define OUTFILECR "le chemin du fichier a coder"
#define OUTFILEDCR "le chemin du fichier a decoder"

static void cr(char *filename)
{
	std::ifstream in(filename, std::ios::in);
	std::ofstream out(OUTFILECR, std::ios::out);
	unsigned char c, tmp;
	unsigned int j, n;

	while (in.good() && ((c = in.get()) != 255))
	{
		n = 0;
		for (j = 0; j < 8; j++)
		{
			n <<= 1;
			n |= ((c & 0x80) >> 7);
			n <<= 1;
			n++;
			c <<= 1;
		}
		tmp = n >> 8;
		out << tmp;
		tmp = (n & 0x00ff);
		out << tmp;
	}

	in.close();
	out.close();
}

static void dcr(char *filename)
{
	std::ifstream in(filename, std::ios::in);
	std::ofstream out(OUTFILEDCR, std::ios::out);
	unsigned char c, d, tmp;
	unsigned int i;
	
	while (in.good() && ((c = in.get()) != 255))
	{
		 d = in.get();

		 for (i = 0; i < 4; i++)
		 {
			 tmp <<= 1;
			 tmp |= ((c & 0x80) >> 7);
			 c <<= 2;
		 }
		 for (i = 0; i < 4; i++)
		 {
			 tmp <<= 1;
			 tmp |= ((d & 0x80) >> 7);
			 d <<= 2;
		 }
		 out << tmp;
	}
	in.close();
	out.close();
}

int main(int argc, char* argv[])
{
	char *in_file;

	if (argc > 1)
	{
	                in_file = argv[1];
                                cr(in_file);     // mettre en commentaires pour decoder
		//dcr(in_file);  enlever les commentaire pour decoder
	}
	return 0;
}

Conclusion :


le codage est tres simple, il intercale entre chaque bit un bit '1'. (ouai c vrai, le fichier codé est deux fois plus gros que le fichier original...).

A voir également

Ajouter un commentaire Commentaire
douha1 Messages postés 4 Date d'inscription samedi 6 octobre 2007 Statut Membre Dernière intervention 26 août 2010
31 mai 2009 à 11:59
salut j'ai un projet de codage recurent avec la methode treillis en c ou C++ et j'ai bloquer , j'ai pas trouvé le méthode d'afficher le schéma qui affiche le codage finale ,s'il vous plaît si quelqu'un deja fais ce projet il le m'envoyer dans cette email dou-h@hotmail.fr

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.