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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 575 fois - Téléchargée 31 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

Messages postés
4
Date d'inscription
samedi 6 octobre 2007
Statut
Membre
Dernière intervention
26 août 2010

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.