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

  FORUM HardWare.fr
  Programmation
  C

  [C newbie] Comment convertir un tableau de binaire en caractère ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C newbie] Comment convertir un tableau de binaire en caractère ?

n°628362
tyllermill​s
Posté le 02-02-2004 à 11:56:16  profilanswer
 

bonjour,
 
voila j'ai un tableau "int".. contenant que des 0 et 1.
ex : Tab[0] = 0 ,
Tab[1] = 1 ,
Tab[2] = 1 ,
Tab[3] = 0 ,
Tab[4] = 1 ,
Tab[5] = 1 ,
Tab[6] = 1 ,
Tab[7] = 1  
 
on lit bien 01101111 qui correspond en ASCII au caractère "o".
 
comment faire la conversion ? je n'en ai aucune idée...
 
merci

mood
Publicité
Posté le 02-02-2004 à 11:56:16  profilanswer
 

n°628372
Taz
bisounours-codeur
Posté le 02-02-2004 à 12:22:30  profilanswer
 

ben à la main. note que ton truc est complètement sous-efficace

n°628377
jagstang
Pa Capona ಠ_ಠ
Posté le 02-02-2004 à 12:25:17  profilanswer
 

il faut utiliser les opérateur binaires | et &

n°628378
Taz
bisounours-codeur
Posté le 02-02-2004 à 12:26:49  profilanswer
 

char c='o';
 
 
et après au travail !

n°628380
jagstang
Pa Capona ಠ_ಠ
Posté le 02-02-2004 à 12:29:35  profilanswer
 

un truc du style
 

Code :
  1. char a = 0 ;
  2. for (int i=0 ; i<8 ; i++)
  3.     {
  4.     if (tab[i])
  5.         a |= 1 ;
  6.     a <<= 1 ;
  7.     }

n°628381
chrisbk
-
Posté le 02-02-2004 à 12:31:20  profilanswer
 

tu fais un branchement inutile, tu ruines les perfos la :o

n°628383
jagstang
Pa Capona ಠ_ಠ
Posté le 02-02-2004 à 12:33:44  profilanswer
 

c'est juste. y'a un vilain cas de bord. je vous laisse corriger l'ébauche

n°628410
Taz
bisounours-codeur
Posté le 02-02-2004 à 12:54:58  profilanswer
 

on déjà fait des milliers de sujets la dessus :o dont un mémorable où ça tapait dans tous les sens mais ou on a convergé vers une solution portable (8 :o)

n°628725
tyllermill​s
Posté le 02-02-2004 à 17:29:02  profilanswer
 

taz a écrit :

ben à la main. note que ton truc est complètement sous-efficace


 
désolé mais je comprend pas ce que vous me dite.
j'ai pas du bien me faire comprendre...  
je veux passer de d'un tableau  
0110111101101100...
a un tableau de caractère ASCII
"ol"... etc..  
 
comme je suis relativement débutant... je ne regarde pas trop du coté des performances..


Message édité par tyllermills le 02-02-2004 à 17:39:22
n°628743
Taz
bisounours-codeur
Posté le 02-02-2004 à 17:44:50  profilanswer
 

pourquoi t'as un tableau d'int déjà ?

mood
Publicité
Posté le 02-02-2004 à 17:44:50  profilanswer
 

n°628747
tyllermill​s
Posté le 02-02-2004 à 17:56:57  profilanswer
 

taz a écrit :

pourquoi t'as un tableau d'int déjà ?

parce que j'avais que des 1 ou des 0.
et nom prof veut pas qu'on utilise des booléen..
 
si y'a d'autre solution je suis preneur...  

n°628748
Taz
bisounours-codeur
Posté le 02-02-2004 à 17:58:24  profilanswer
 

ok. en fait t'as rien compris à ton tp. ton prof te demande de foutre des 0 et des 1 dans un char à l'aide des opérateurs binaires, après, un simple putchar(c); et c'est gagné. donc pas besoin de tableau. juste un char


Message édité par Taz le 02-02-2004 à 17:58:58
n°628775
Carbon_14
Posté le 02-02-2004 à 18:54:22  profilanswer
 

Faudrait voir l'intitulé exact...
 
Sinon, la représentation binaire 01001110 peut se convertir en valeur int en jouant avec les puissances de deux (0 * 128 + 1 * 64 + .. + 0 * 1). On a alors le code ASCII du caractère.

n°628777
Taz
bisounours-codeur
Posté le 02-02-2004 à 18:56:46  profilanswer
 

Carbon > très mauvaise idée, je crois pas que le but de l'exerice soit de faire des multiplications.
 
toutes façons, y a que l'hexa qui m'aille :o

n°628852
tyllermill​s
Posté le 02-02-2004 à 21:11:47  profilanswer
 

taz a écrit :

Carbon > très mauvaise idée, je crois pas que le but de l'exerice soit de faire des multiplications.
 
toutes façons, y a que l'hexa qui m'aille :o


y'a pas vraiment d'exercice.. c'est un projet que je réalise.. et je me retrouve avec un tableau de bits .. représentant les code ascii..  
et moi je veux les afficher.. c 'est simple non ?
 
dans l'autre sens je sais le faire..

n°628857
Taz
bisounours-codeur
Posté le 02-02-2004 à 21:13:25  profilanswer
 

mauvaise approche on te dit. un tableau de bits ça n'existe pas. utilise un char et les opérateurs binaires. toute façon avec ton approche, tu rajoute une étape inutile

n°629118
tyllermill​s
Posté le 02-02-2004 à 23:33:45  profilanswer
 

je comprend bien que ce ne soit pas excellent...  
mais j'ai utiliser mon tableau.. j'ai plus qu'a le décrypter pour le remette en tableau de caractère..  
 
mais je viesn d'avoir une idée.... je pense savoir comment faire.

n°629120
tyllermill​s
Posté le 02-02-2004 à 23:33:59  profilanswer
 

je comprend bien que ce ne soit pas excellent...  
mais j'ai utiliser mon tableau.. j'ai plus qu'a le décrypter pour le remette en tableau de caractère..  
 
mais je viesn d'avoir une idée.... je pense savoir comment faire.

n°629146
Taz
bisounours-codeur
Posté le 03-02-2004 à 00:32:08  profilanswer
 

mais ce que tu ne comprends pas c'est qu'avec ta méthode tu te rajoute du travail !
 
printf("%c %d", 'c', 'c');
 
le but c'est que tu mettes ce qu'il faut dans un char, avec les opérateurs binaires. si tu fais un tableau, ben c'est pareil, faut que tu mettes ce qu'il faut dans un char, sauf que ce qu'il faut mettre dedans, tu t'es déjà fait chier à le mettre dans le tableau pour rien
 
ma mathode
 
valeurs -> char
 
ta méthode
 
valeurs -> tableau -> valeurs -> char

n°630929
tyllermill​s
Posté le 04-02-2004 à 13:02:46  profilanswer
 

voila ce que je voulais faire.. et j'ai réussit.
je sais, c'est certainement nul du point de vue programmation, mais ca marche..

Code :
  1. int conversion_bin_carac(char * tab_char,unsigned long * tab_bin,long ind)
  2. {
  3. int ret = -1;
  4. long i,j=0;
  5. char TC[8];
  6. // printf("********* CARACTERE ******\n" );
  7. //  printf("\n" );
  8.   for (i=0;i<3;i++)
  9.   {
  10.    TC[0] = (char) tab_bin[j] & 1;
  11.    TC[1] = (char) tab_bin[j+1] & 1;
  12.    TC[2] = (char) tab_bin[j+2] & 1;
  13.    TC[3] = (char) tab_bin[j+3] & 1;
  14.    TC[4] = (char) tab_bin[j+4] & 1;
  15.    TC[5] = (char) tab_bin[j+5] & 1;
  16.    TC[6] = (char) tab_bin[j+6] & 1;
  17.    TC[7] = (char) tab_bin[j+7] & 1;
  18.    j= j+8;
  19.    TC[0] = (TC[0] << 7) & 0x80;
  20.    TC[1] = (TC[1] << 6) & 0x40;
  21.    TC[2] = (TC[2] << 5) & 0x20;
  22.    TC[3] = (TC[3] << 4) & 0x10;
  23.    TC[4] = (TC[4] << 3) & 0x08;
  24.    TC[5] = (TC[5] << 2) & 0x04;
  25.    TC[6] = (TC[6] << 1) & 0x02;
  26.    TC[7] = TC[7]  & 0x01;
  27.    tab_char[ind+i] = TC[0] |TC[1] |TC[2] |TC[3] |TC[4] |TC[5] |TC[6] |TC[7];
  28.   // printf("%c",tab_char[i]);
  29.   }
  30. return ret;
  31. }

n°630934
Taz
bisounours-codeur
Posté le 04-02-2004 à 13:05:15  profilanswer
 

ben oui, mais c'est mauvais et très lourd pour trois fois rien
 
c'est complètement inutile ton tableau d'entiers.

n°630955
Taz
bisounours-codeur
Posté le 04-02-2004 à 13:17:07  profilanswer
 

genre
 
for(i=0; i<CHAR_BIT; ++i)
{
  faire quelque chose pour régler le bit qui va bien dans le char
  ou afficher le bit qui va bien
}
 
là tu t'ennuie pour rien à stocker dans ton tableau des bits : stokes bits directement ou ils doivent entre

n°631018
tyllermill​s
Posté le 04-02-2004 à 13:46:22  profilanswer
 

Taz a écrit :

ben oui, mais c'est mauvais et très lourd pour trois fois rien
 
c'est complètement inutile ton tableau d'entiers.


ce que tu comprends pas c'est que je m'en sert avant de mon tableau de bit !!!
je fait de la cryptographie !.. on travaille sur des "bits"... qu'on permute . ... etc...  

n°631037
jagstang
Pa Capona ಠ_ಠ
Posté le 04-02-2004 à 13:55:35  profilanswer
 

oh là là... là tu travaille pas réellement sur les bits. ça n'est qu'une simulation.
 
ça m'étonne qu'en crypto vous utilisez de telle méthodes...

n°631062
black_lord
Truth speaks from peacefulness
Posté le 04-02-2004 à 14:22:52  profilanswer
 

1 octet pour stocker un bit ça me fait mal

n°631066
chrisbk
-
Posté le 04-02-2004 à 14:28:01  profilanswer
 

la il en est meme a 4octets par bit avec ses ints

n°631070
black_lord
Truth speaks from peacefulness
Posté le 04-02-2004 à 14:30:06  profilanswer
 

arf j'avais pas fait gaffe que c'etait des ints et pas des char en plus :D

n°631093
tyllermill​s
Posté le 04-02-2004 à 15:02:12  profilanswer
 

mais oui je sais.. ca fait mal..
mon but c'est de crypter.. pas de faire un sources fiable...

n°631252
Taz
bisounours-codeur
Posté le 04-02-2004 à 16:30:45  profilanswer
 

ben tu cryptes rien là, même avec des char, il tu gaches ta mémoire
 
 
bon ton travail c'est de faire deux fonctions  
 
char set_bit(char c, unsigned offset, unsigned value);
et
unsgined get_bit(char c, unsigned offset);

n°631333
black_lord
Truth speaks from peacefulness
Posté le 04-02-2004 à 17:38:02  profilanswer
 

euh j'ose : bit slicing ?

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C newbie] Comment convertir un tableau de binaire en caractère ?

 

Sujets relatifs
PB Aligner en haut un tableau[PHP] 1000 variables ou un tableau à 1000 entrées ?
allocation dynamique pour un tableau d'élémentsHELP, pb d'espace ( le caractère )
[HTML/JS] Envoyer un tableau comme formulaireAffichage jusqu'à un caractère
CSV et tableau dynamique ?passer un tableau d'entier en parametre dans une URL [resolu]
commen on utilise le binaire avec les fichiers ??[CSS] Problème d'impression tableau
Plus de sujets relatifs à : [C newbie] Comment convertir un tableau de binaire en caractère ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR