Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2339 connectés 

 


Dernière réponse
Sujet : [C] Convertisseur Decimal <-> Binaire
Toxin Ben vi je me suis planté : il faut lire <<1 (décalage de 1 à gauche) et non <<2.
 
Après je pense qu'il n'y a pas besoin d'affectation. Si j'ai le temps je vais essayer de me programmer ça, ça a l'air marrant.

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Toxin Ben vi je me suis planté : il faut lire <<1 (décalage de 1 à gauche) et non <<2.
 
Après je pense qu'il n'y a pas besoin d'affectation. Si j'ai le temps je vais essayer de me programmer ça, ça a l'air marrant.
Roswell_ il y a des profd qui savent plus trop quoi inventer :sweat:
Toxin Tu aurais expliqué cela dès le début on aurait gagné un temps précieux.
 
Bah tu prends une grosse variable globale dans le serveur que tu initialise à 0. Un bon gros truc genre un méga tableau de char avec un indice ou si tu tiens à faire du C++ tu fous ça dans une classe qui a entre autres la méthode addbit(int) que tu appelles avec 0 ou 1 depuis les fonctions qui sont appelées quand SIGUSR1&2 sont déclenchés.
 
A chaque fois que tu reçois un bit (à toi de voir si le client commence par le bit de poids le plus élevé ou le plus faible), tu utilises les décalages de bits en C avec un ou de la valeur en paramètre par exemple
 
void CTampon::addBit(char val)
// Ajout d'un bit de poids plus faible que le précédent ou d'un bit d'un nouvel octet
{
   if ( _nbBitsRecus == 8 )
   {
      _nbBitsRecus = 1 ;
      _indiceTab++ ;
   } /* if -octet suivant- */
   else
      _nbBitsRecus++ ;
 
   _tab[_indiceTab]<<2 | val ; /* pas sûr de la syntaxe */
}
 
A chaque fois tu reçois 8 appels tu passes sur une autre case du tableau. Et oh miracle tu récupères les caractères sans autre conversion.
 
QQch dans le genre.
tenkei Justement, le probleme est qu'on peut pas transmettre des donnees par signaux. D'ou:
 
[tenkei@struct]./client 12345 "coucou maman"
 
12345 est le PID du serveur, on s'en occupe pas.
Le client prend la chaine "coucou maman", convertit la valeur ASCII du premier caractere en binaire (au hasard, "c" = 52 = 01101011) et envoie des signaux au serveur en fonction du resultat binaire.
 
Quand le serveur recoit SIGUSR1, il l'interprete comme un 0, quand il recoit SIGUSR2 il l'interprete comme un 1. Ainsi on arrive en theorie a reconstruire la valeur en binaire du code ASCII du premier caractere, qu'on convertit en decimal et qu'on affiche.  
 
Puis on repete tout ca pour les autres caracteres de la chaine.
Toxin Là c'est moi qui décroche. Comment tu transmets des données par signaux ? Avec un pipe ou un tube nommé c'est plus simple mais bon....
 
1) Tu transmets quoi, du texte "coucou maman ?" ou "123456789". Combien de caractères à chaque fois ?
 
2) ton problème est où ? Quand tu envoies les données ou quand tu les reçois pour les afficher ?
tenkei Ben voila le probleme:
Je dois ecrire deux programmes, un serveur et un client, communiquant uniquement a l'aide des signaux SIGUSR1 et SIGUSR2. Le but est que le client puisse transmettre du texte au serveur qui va l'afficher. Je pensais faire en sorte que le client transmette le code ascii des caracteres en binaire un a un, puis que le serveur les recupere, reconvertisse le binaire en code ascii et affiche le resultat.
La partie communication par signaux ne pose pas de probleme, il ne me reste plus qu'a arriver a convertir les codes ascii vers/du binaire.
 
Voila, j'espere que c'est plus clair.
Toxin C'est pas très précis, ne sachant pas sous quelle forme est la source du problème : si tu as une variable int il suffit d'écrire
printf("%x\n", entier) ; pour l'afficher en hexa.
 
Si tu as un char * désignant un entier c'est
printf("%x\n", atoi(string)) ;
 
Dans l'autre sens c'est un peu plus chaud il faut que tu parses toi même la string.
tenkei Salut tout le monde,
 
Est-ce que quelqu'un saurait comment coder une fonction convertissant un nombre decimal (un code ascii en l'occurence) en un nombre binaire, et vice-versa?
 
Merci d'avance.

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)