Probleme de conversion binaire

Signaler
Messages postés
6
Date d'inscription
jeudi 4 novembre 2004
Statut
Membre
Dernière intervention
28 janvier 2005
-
Messages postés
4
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
29 janvier 2005
-
Je cree un programme capable de transformer les codes ascii de caracteres en leur equivalence en base 2, puis de reprendre ces nombre en binaire pour les retransformer en nombre en base 10 et pouvoir les reafficher a l'ecran.

J'ai reussi a realiser la 1ere etape, c'est a dire transformer un code ascii en binaire. Je stock mon resultat dans un tableau de char.
Mais je bloque pour transformer ce tableau contenant des '0' et des '1' en un int.
Merci de votre aide.


imotep !

12 réponses

Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010

un int c'est 32 zeros et uns pour une machine 32 bits...
Messages postés
6
Date d'inscription
jeudi 4 novembre 2004
Statut
Membre
Dernière intervention
28 janvier 2005

oui je met sui mal exprimer , je ne cherche pa a recuperer un int

mais plutot le nombre en base 10 correspondant a la suite de 0 et 1 contenue dans mon tableau.

Cependant le choix de ne remplir que 8 cases est justifier car un code ascii n'est jamais superieur a 256 = 2^8
Messages postés
100
Date d'inscription
jeudi 1 avril 2004
Statut
Membre
Dernière intervention
9 juin 2014
1
ben je sais pas ce que tu veux faire, mais si tu connais le caractere
de depart, pourquoi tu t'embetes avec une conversio binaire -> int
alors que tu peux simplement convertir les char en int avec la fction:
atoi...

http://www.cplusplus.com/ref/cstdlib/atoi.html



non??



pour ton prog t'as qu'a pas utilisé tes codes binaires, et utiliser atoi pour afficher l'ascii de ton caractere en base 10.
Messages postés
6
Date d'inscription
jeudi 4 novembre 2004
Statut
Membre
Dernière intervention
28 janvier 2005

En fait j'ai 2 programmes, un client et un serveur ki tournent sur la meme machine

je rentre une chaine de caractere au client qui la converti en binaire
et l'envoi en temps reel au serveur a l'aide des signaux SIGUSR1 et
SIGUSR2. Le serveur doit alors effectuer l'operation inverse et
m'afficher ma chaine de caractere a partir du binaire --> c'est la
que je bloque, je recupere bien le binaire mais je ne comprend pas
comment le retranscrire en code ascii.
Messages postés
100
Date d'inscription
jeudi 1 avril 2004
Statut
Membre
Dernière intervention
9 juin 2014
1
sinon en cherchant un peu sur cppfrance-->http://www.cppfrance.com/code.aspx?ID=24539

ca ressemble pas mal à ton pb non? conversion binaire decimal.



par contre pour passer du flux binaire aux char, soit tu trouves un
truc tt fais, soit tu le code toi même en utilisant les opérateurs
binaires comme <<, >>, |, etc... puisque tu connais la
taille du flux que tu envoies ca devrait être faisable.

bon courage
Messages postés
7
Date d'inscription
lundi 6 décembre 2004
Statut
Membre
Dernière intervention
23 décembre 2005

char TabBinaire[8]; //ton tableau binaire
unsigned char Val[8];
int ValAscii; // la valeur de ton tableau binaire en int


// si ton tableau stock le caractere '0' ou '1' ( TabBinaire[0] = '1' ou TabBinaire[0] = '0' )
for(int i=0; i<8; i++)
{
if(TabBinaire[i] == '0') Val[i] = 0;
else Val[i] = 1;
}


ValAscii = 128*Val[7] + 64*Val[6] + 32*Val[5] + 16*Val[4]
+ 8*Val[3] + 4*Val[2] + 2*Val[1] + 1*Val[0] ;






// si ton tableau stock la valeur '0' ou '1' ( TabBinaire[0] = 1 ou TabBinaire[0] = 0 )
ValAscii = 128*TabBinaire[7] + 64*TabBinaire[6] + 32*TabBinaire[5]
+ 16*TabBinaire[4] + 8*TabBinaire[3]
+ 4*TabBinaire[2] + 2*TabBinaire[1] + 1*TabBinaire[0] ;



unsigned char ValeurCodeAscii ; // la valeur du code ascii 255 max
ValeurCodeAscii = (unsigned char)ValAscii;

Je n'ai pas tenu compte du poids fort faible des valeurs de ton tableau.
J'espere que ca repond a ta question.
Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010

Désolé mais j'ai pas pu m'en empecher...

#include <cstdlib>
#include
#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;
}
Messages postés
6
Date d'inscription
jeudi 4 novembre 2004
Statut
Membre
Dernière intervention
28 janvier 2005

Merci de votre aide, je m'en suis sortit grâce à la methode de bayeto mais celle de CurieuxDeSavoir fonctionne tout aussi bien.
Messages postés
4
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
29 janvier 2005

Salut à tous,







Très honnêtement, je ne vois pas l'intérêt d'une telle opération.

Si j'ai bien compris vos sources et problème, Le programma récupère une
chaîne de caractères par l'entrée standard, la vonvertit en binaire en
rangeant la valeur dans un tableau de caractères composé de '1' et '0'
(donc une autre chaîne de caractère dont la taille est supérieure à la
taille de la chaîne avant convertion) pour la reconvertir dans le
format original.



Finalement, tu convertit une chaîne de caractère en une autre chaîne,
plus grande, pour la remettre dans la même situation qu'avant.

Je ne vois pas très bien le but de l'opération, mais il me semble que cette famause convertion ne soit pas très performante

Bien à vous.



PCL

-- Il n'y a pas de problèmes, il n'y a que des solutions. C'est mathématique. --
Messages postés
6
Date d'inscription
jeudi 4 novembre 2004
Statut
Membre
Dernière intervention
28 janvier 2005

Mon but etait de creer 2 programmes; 1 client et un serveur; et le client devait etre capable de communiquer des chaine de caractere au serveur grace uniquement aux 2 signaux SIGUSR1 et SIGUSR2. Je devait donc convertir ma chaine de caractere en binaire, l'envoyer au serveur grace aux signaux puis la tache du serveur etait de reconvertir en base 10 et d'afficher la chaine sans l'alterer.
Mais je suis d'accord que de stocker la valeur binaire dans un tableau est loin d'etre la meilleur facon de faire ca, j'ai finalement utiliser une methode bien plus pratique.

blob
- imotep ! -
Messages postés
3
Date d'inscription
dimanche 24 avril 2005
Statut
Membre
Dernière intervention
18 mai 2005

salut tout le monde est-ce que quelqu'un pourrait m'aider à convertit une chaine de caractère en binaire en utilisant le language C.
merci d'avance!!
Messages postés
4
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
29 janvier 2005

Salut nawsa,



Sous quelle forme veux-tu ton résultat...

Si tu le veux sous forme d'une autre chaîne de caractères... Alors la solution se trouve au-dessus...

Sinon....

A+.

PCL




PCL


-- Il n'y a pas de problèmes, il n'y a que des solutions. C'est mathématique. --