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

  FORUM HardWare.fr
  Programmation
  C

  question sur la base 64

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

question sur la base 64

n°690487
wong_sifu
Posté le 02-04-2004 à 09:23:45  profilanswer
 

Bonjour,
 
Voilà, j'ai trouvé ce code sur le le site salemioche.com, pour encoder en base 64. Mais, je ne comprend pas bien la partie avec les fprintg notamenet les | et &. Si quelqu'un pouvait m'aider !
 
Merci.
 

Code :
  1. #include <stdio.h>
  2. #define b(a) ((a>='A'&& a<='Z')?(a-65):\
  3.               ((a>='a' && a<='z')?(a-71):\
  4.                ((a>='0' && a<='9')?(a+4):\
  5.                 ((a=='+')?(62):\
  6.                  ((a=='/')?(63):(0))\
  7.                 )\
  8.                )\
  9.               )\
  10.              )
  11. #define isEnd(a) if ( a == '=' ) break;
  12. int main ( int argc, char *argv[] ) {
  13.   FILE *f, *g;
  14.   unsigned char buff[4];
  15.   if ( !(f = fopen(argv[1],"r" ))) f = stdin ;
  16.   if ( !(g = fopen(argv[2],"w" ))) g = stdout;
  17.   while ( fread(buff,1,4,f) == 4 ) {
  18.     fprintf(g,"%c",b(buff[0])<<2   | b(buff[1])>>4 & 0x3 );
  19.     isEnd(buff[2])
  20.     fprintf(g,"%c",b(buff[1])<<4 | b(buff[2])>>2 & 0xF);
  21.     isEnd(buff[3])
  22.     fprintf(g,"%c",b(buff[2])<<6 | b(buff[3]) & 0x3F);
  23.   }
  24.   fclose(f);
  25.   fclose(g);
  26.   return 0;
  27. }

mood
Publicité
Posté le 02-04-2004 à 09:23:45  profilanswer
 

n°690490
Taz
bisounours-codeur
Posté le 02-04-2004 à 09:26:29  profilanswer
 

| ou binaire
& et binaire
<< et >> décalages binaires

n°690501
wong_sifu
Posté le 02-04-2004 à 09:35:44  profilanswer
 

Merci, pour ces infos mais cela c'était ok !
 
En fait, c'est plus sur le sens de :
b(buff[0])<<2   | b(buff[1])>>4 & 0x3  
par exemple.
 
Merci encore.

n°690548
philou_a7
\_o&lt; coin ! &gt;o_/
Posté le 02-04-2004 à 10:09:49  profilanswer
 

c'est juste une suite d'operations binaires, y a rien a comprendre !
 
decalage de 2 sur le resultat de b ( buff[0] )
decalage de 4 sur le resultat de b ( buff[1] )
'ou' binaire entre les 2
'et' binaire entre ce resultat et 0x3, soit 00000011
 
c'est tout :p

n°690722
wong_sifu
Posté le 02-04-2004 à 12:37:28  profilanswer
 

Bon, j'ai du mal m'exprimé,
 
Ma question, en clair, c'est plus en quoi cela encode en base 64, les bases du chagement en base 64.
 
Merci et à bientôt

n°690942
philou_a7
\_o&lt; coin ! &gt;o_/
Posté le 02-04-2004 à 15:05:30  profilanswer
 

ah bah ca, faut que tu l'ecrives en detail pour voir les petites optimisations d'ecriture qui font que ca marche :D


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

  question sur la base 64

 

Sujets relatifs
Petite question sur la génération de png à la volée à base d'une fontPetite question de base sur les tableaux ( HTML )
[Access] Question de base sur les tables/requêtes[PHP] question de base sur la structure du if...then...else ?
[Delphi] TreeView : question de base....[sql ]question de base : qu'est ce que fait une jointure ?
ASP et base access... Petite question...PHP : question de base
[ASP] petite question accès base acces?Question de base : CLASSPATH ....
Plus de sujets relatifs à : question sur la base 64


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