Désolé mais j'ai pas pu m'en empecher...
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
char* type2bin(char dec,char* bin)
{
int r = 8;//nb de cases binaires
memset(bin,'0',r); //par defaut le nb bin est nul
bin[r] = 0;
while(r--)
bin[r] = '0' + ((dec & (1 << r)) != 0);
return bin;
}
char bin2char(char* bin)
{
char dec = 0;
char* pos = bin;
while(pos < bin + 8)
{
dec += ((*pos - '0') * (1 << (pos - bin)));
pos++;
}
return dec;
}
int main(int argc,char* argv[],char* envp[])
{
char* salut = "Tout est ici...";
if(argc > 1)
salut = argv[1];
char blb[9];
char* cat = new char[strlen(salut)*8 + 1];
if(!cat)
return 1;
*cat = 0;
while(*salut)
{
//conversion du char en binaire
cout << *salut << " " << type2bin(*salut,blb);
//conversion du binaire en char
char c = bin2char(blb);
cout << " " << c << " " << hex << (int) c;
cout << endl;
strcat(cat,blb);
salut++;
}
cout << endl << "La chaine binaire complete..." << endl
<< cat << endl << "correspond a..." << endl;
salut = cat;
while(*salut)
{
cout << bin2char(salut);
salut += 8;
}
cout << endl;
delete [] cat;
return 0;
}