IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

fonction qui transforme un entier en octet


Sujet :

C

  1. #21
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par seriousme
    Voila là c'est un formatage octet par octet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    char* convert(int n){
                        char *binaire=calloc(33,sizeof(char));
                        int i=0;
                        int mask=1;
                        char a;
                        for(i=0;i<32;i++){
                                          a='0';
                                          if((n&mask)==mask){
                                                           a='1';
                                                           }
                                          binaire[31-i]=a;
                                          mask=(mask<<1);
                                          }
                                          char *bin=strchr(binaire,'1');
                                          binaire=bin-(bin-binaire)%8;
                                          return binaire;
                                          }
    Mais c'est quoi cette mise en page démentielle ?
    Regle ton éditeur comme ça :

    - remplacer les tabulation par des espaces
    - une tabulation = 3 espaces

    Petit test unitaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    char* convert(int n)
    {
       char *binaire = calloc(33, sizeof(char));
       int i = 0;
       int mask = 1;
       char a;
       for (i = 0;i < 32;i++)
       {
          a = '0';
          if ((n&mask) == mask)
          {
             a = '1';
          }
          binaire[31 - i] = a;
          mask = (mask << 1);
       }
       char *bin = strchr(binaire, '1');
       binaire = bin - (bin - binaire) % 8;
       return binaire;
    }
     
    #define N(a) (sizeof(a)/sizeof*(a))
     
    int main()
    {
       struct test
       {
          int tst;
          int n;
          char const *s;
       };
     
       static struct test const a[] =
          {
             {
                10, 0, "00000000"
             },
             {
                11, 1, "00000001"
             },
             {
                12, 0x7F, "01111111"
             },
             {
                13, 0x80, "10000000"
             },
             {
                14, 0xFF, "11111111"
             },
             {
                15, -1, "11111111"
             },
          };
       int err = 0;
       size_t i;
       for (i = 0; !err && i < N(a); i++)
       {
          struct test const *p = a + i;
          char* s = convert(p->n);
          if (s != NULL)
          {
             if (strcmp (s, p->s) != 0)
             {
                printf ("Error at test #%d '%s' / '%s'\n", p->tst, s, p->s);
                err = 1;
             }
             free (s), s = NULL;
          }
       }
       if (!err)
       {
          puts("P A S S E D");
       }
     
       return 0;
    }
    Peut mieux faire...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Error at test #15 '11111111111111111111111111111111' / '11111111'
    Pas de Wi-Fi à la maison : CPL

  2. #22
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Ma petite contribution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void hex2bin (unsigned int data, char *str, int width)
    {
       int i,j;
     
       for (i=0, j=width; i<width; i++)
          str[--j] = (data >> i) & 1 ? '1' : '0' ;
     
       str[i] = '\0';
    }
    Il ya peut etre mieux....
    Pas besoin d'explication, c'est trivial...
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  3. #23
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Mais c'est quoi cette mise en page démentielle ?
    Je trouve plus propre d'exagérer le décalage des blocs comme en Python même si il est vrai que ici j'ai mal mit mes accolades.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  4. #24
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    C'est ça que tu veux ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    char *binaire2(unsigned int x)
    {
        unsigned int n = 1 << CHAR_BIT * (sizeof(unsigned int)) - 1; // pour être plus portable (include <limits.h>)
        unsigned int val;
        char *res = malloc(CHAR_BIT * (sizeof(unsigned int))+ sizeof(unsigned int) + 1);
        char *ptr;
        // pour compter les bit et mettre les espaces
        int espace = 0;
     
        if (res)
        {
            ptr = res;
            while (n != 0)
            {
                val = x & n;
                if (val == 0)
                    *ptr++ = '0';
                else
                    *ptr++ = '1';
                 n >>= 1;
                // on ajoute l'espace pour séparer les bytes
                espace ++;
                if (espace == CHAR_BIT)
                {
                    *ptr ++ = ' ';
                    espace = 0;
                }
            }
            *ptr = 0;     
        }
        return res;
    }
    5 donne "00000000 00000000 00000000 00000101"
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #25
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Je le refais avec un main() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include <stdio.h>
     
    void hex2bin (unsigned int data, char *str, int width)
    {
       int i,j;
     
       for (i=0, j=width; i<width; i++)
          str[--j] = (data >> i) & 1 ? '1' : '0' ;
     
       str[i] = '\0';
    }
     
     
    int main(void)
    {
       char str[16];
     
       hex2bin (0xAA, str, 8);
       printf("%s\n", str);
       return 0;
    }
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  6. #26
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Citation Envoyé par crocodilex
    Ma petite contribution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void hex2bin (unsigned int data, char *str, int radix)
    {
       int i,j;
     
       for (i=0, j=radix; i<radix; i++)
          str[--j] = (data >> i) & 1 ? '1' : '0' ;
     
       str[i] = '\0';
    }
    Il ya peut etre mieux....
    Pas besoin d'explication, c'est trivial...
    Emdel va gueuler:code illisible, effet de bord...
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  7. #27
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par crocodilex
    Ma petite contribution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    seriousme: Error at test #15 '11111111111111111111111111111111' / '11111111'
    crocodilex: Error at test #10 '00' / '00000000'
    Candidat suivant ...
    Ah, radix, c'est la largeur... fallait le dire.. Pour moi, c'est la base, alors j'ai mis 2 !

    Avec 8 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    seriousme: Error at test #15 '11111111111111111111111111111111' / '11111111'
    crocodilex: P A S S E D
    Mais il faut remplacer 'radix' par 'width', ce sera plus clair. Le code doit être 'auto-documenté'.
    Pas de Wi-Fi à la maison : CPL

  8. #28
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    seriousme: Error at test #15 '11111111111111111111111111111111' / '11111111'
    crocodilex: Error at test #10 '00' / '00000000'
    Candidat suivant ...
    Ah, radix, c'est la largeur... fallait le dire.. Pour moi, c'est la base, alors j'ai mis 2 !

    Avec 8 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    seriousme: Error at test #15 '11111111111111111111111111111111' / '11111111'
    crocodilex: P A S S E D
    Mais il faut remplacer 'radix' par 'width', ce sera plus clair. Le code doit être 'auto-documenté'.
    Ouf j'ai eu peur
    En effet width et plus causant que radix...
    Je corrige tout de suite.
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  9. #29
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Trap D
    C'est ça que tu veux ?
    <...>
    5 donne "00000000 00000000 00000000 00000101"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    seriousme: Error at test #15 '11111111111111111111111111111111' / '11111111'
    crocodilex: P A S S E D
    Trap D: Error at test #10 '00000000 00000000 00000000 00000000 ' / '00000000'
    Pas de Wi-Fi à la maison : CPL

  10. #30
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par seriousme
    Emdel va gueuler:code illisible, effet de bord...
    Je n'avais pas lu ton mesage...
    Tu parles de quel effet de bord ? Quelque chose m'a échappé ? Dis moi où, que je corrige ça tout de suite.
    Pour le code illisible, tu fais certainement allusion à l'opérateur ternaire....Oui, je sais, beaucoup de developpeurs n'aiment pas cette écriture, mais moi j'aime bien. Désolé...
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  11. #31
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par crocodilex
    Tu parles de quel effet de bord ? Quelque chose m'a échappé ? Dis moi où, que je corrige ça tout de suite.
    Ta fonction n'a pas d'information de taille. Elle peut donc écrire hors des limites du tableau de char ...

    J'ajouterais une information 'taille'
    Pas de Wi-Fi à la maison : CPL

  12. #32
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Emmanuel, c'est quoi ton test ?????
    Quelle est mon erreur ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  13. #33
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Trap D
    Emmanuel, c'est quoi ton test ?????
    Quelle est mon erreur ?
    Non conformité avec la spec (format 8 bits)

    Ignorer ce qui est au-dessus du trait...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /* --- ... ----------- */
    Pas de Wi-Fi à la maison : CPL

  14. #34
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Ta fonction n'a pas d'information de taille. Elle peut donc écrire hors des limites du tableau de char ...

    J'ajouterais une information 'taille'
    Merci pour l'info. Ci-joint une version légèrement améliorée suite à cette remarque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    #include <stdio.h>
     
    #define STRSIZE 16
     
    /*
    **=============================================================================
    ** hex2bin      : Convert data into binary format
    **=============================================================================
    ** Output :
    **    - str     : string containing data conversion into binary format
    ** Input : 
    **    - data    : data to be converted
    **    - width   : binary format width
    **    - strSize : str max size
    ** Return values :
    **    If successful, hex2bin returns 1. If there is an error (string size
    **    error), hex2bin returns 0.
    **=============================================================================
    */
    int hex2bin (unsigned int data, char *str, size_t strSize, unsigned char width)
    {
       int i, j, res=1;
     
       if (width < strSize) {
          for (i=0, j=width; i<width; i++)
             str[--j] = (data >> i) & 1 ? '1' : '0' ;
          str[i] = '\0';
       }
       else
          res = 0;
     
       return res;
    }
     
     
    int main(void)
    {
       char str[STRSIZE];
     
       if ( !hex2bin(0xAA, str, STRSIZE, 8) )
          printf("String size error\n");
       else
          printf("%s\n", str);
     
       return 0;
    }
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  15. #35
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par crocodilex
    Merci pour l'info. Ci-joint une version légèrement améliorée suite à cette remarque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       if (width < strSize) {
          for (i=0, j=width; i<width; i++)
             str[--j] = (data >> i) & 1 ? '1' : '0' ;
          str[i] = '\0';
    Et la place pour le 0 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       if (width < strSize - 1) {
    Pas de Wi-Fi à la maison : CPL

  16. #36
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Il faut comparer ce qui est comparable, je n'ai jamais prétendu traduire un char mais un unsigned int, c'est différent, donc ce test n'est pas valable.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  17. #37
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Et la place pour le 0 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       if (width < strSize - 1) {
    La condition (width < strSize) en tient compte, à moins que j'ai loupé quelque chose !!!
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  18. #38
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par crocodilex
    La condition (width < strSize) en tient compte, à moins que j'ai loupé quelque chose !!!
    Exact. Je suis fatigué. Vivement mardi que je reprenne le boulot !
    Pas de Wi-Fi à la maison : CPL

  19. #39
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Si vous savez comment introduire du code assembleur dans un programme C, je peux vous donnez le script assembleur qui fait ça. C'est plus cours, plus rapide en temps d'execution et aussi efficace.

  20. #40
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Personnellement je n'ai pas essayé d'incorporer un script assembleur avec le langage C. J'ai deja vu un programme pascal incorporant un script assembleur.

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/05/2007, 22h49
  2. fonction qui transforme une chaine en majuscule
    Par kawther dans le forum Langage
    Réponses: 3
    Dernier message: 23/04/2007, 11h47
  3. Réponses: 6
    Dernier message: 22/11/2006, 10h38
  4. [Librairies] fonction qui transforme le rtf en texte
    Par The Wretched dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 15/12/2005, 13h02
  5. Fonction qui transforme chaine de caractère par une autre?
    Par geoffreykill dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 09/12/2004, 14h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo