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

avec Java Discussion :

Conversion entier en binaire


Sujet :

avec Java

  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Par défaut Conversion entier en binaire
    Bonjour,

    Je voudrais convertir par exemple les 256 premiers nb entiers en binaires de telle sorte que le binaire obtenu s'étale sur un octet :

    0 devient 00000000
    1 devient 00000001
    2 devient 00000010
    etc

    le but étant ensuite de transformer les binaires en String de 8 caractères
    pour les inclure dans un vecteur.

    merci

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    765
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 765
    Par défaut
    Bonjour,

    C'est quand même assez basique, essai de faire un début de code, tu trouvera de l'aide si tu as un soucis.

    On ne va pas faire le boulot à ta place non plus ...

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Par défaut
    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
     
    char [][] tab =new char[256][8];
    i=0;
    while(i<256)
    	{
    	s = Integer.toBinaryString(i);
    	j1 =0;
    	j =0;
     
    	while(j1<s.length())
    		{
    		tab[i][j]=s.charAt(j1);
    		j1++;j++;
    		}
    	i++;
    	}
    l'ennui, c'est que lorsque je reécris tab, j'obtient :
    0
    01
    10
    11
    etc,
    je voudrais que cela s'écrive sur 8 caractères.

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Par défaut
    Si vous préférez, je souhaite que les cases non significatives de tab[i][j] contiennent des 0.

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    765
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 765
    Par défaut
    Comme ça rapidement et simplement je dirai qu'il faut remplir de zero tout le tableau pour l'initialiser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    		for(int s=0;s<256;s++)
    		{
    			for (int t=0;t<8;t++)
    			{
    				tab[s][t] = '0';
    			}
    		}
    Après tu fais ton traitement avec des boucles for, car quand on connait le nombre d'itération on utilise la boucle for et pas while.

    De plus soit tu inverses tout le tableau après soit tu commences à le remplir en commençant par l'indice 7 et pas 0. Sinon c'est pas dans l'ordre de lecture. Enfin c'est toi qui voit sur ce point.

    Bon courage,

  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Par défaut
    ok, j'ai vérifié, mais ça cache un bug que je ne trouve pas :
    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
     
                             for(j=0;j<256;j++)
    		{
    			for (i=0;i<8;i++)
    			{
    				tab[j][i] = '0';
    			}
    		}
    		i=1-1;
             		while(i<256)
    				{
    				s = Integer.toBinaryString(i);
    				j1 =0;
    				j =7;
     
    				while(j1<s.length())
    					{
    					tab[i][j]=s.charAt(j1);
    					j1++;j--;
    					}
    				i++;
    				}
     
    		for(j=0;j<256;j++)
    		{
    			for (i=0;i<8;i++)
    			{
    				System.out.print("*" + tab[j][i]);
    			}
    		System.out.println();
    		}
    produit :

    *0*0*0*0*0*0*0*0
    *0*0*0*0*0*0*0*1
    *0*0*0*0*0*0*0*1
    *0*0*0*0*0*0*1*1
    *0*0*0*0*0*0*0*1
    *0*0*0*0*0*1*0*1
    *0*0*0*0*0*0*1*1
    *0*0*0*0*0*1*1*1

    ce n'est pas les premiers nb binaires, quand on regarde de près

  7. #7
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Une autre solution serait de récupérer le tableau de caractères de la chaine en binaire et d'utiliser la méthode System.arraycopy().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    char[] zeroFilledArray = { '0', '0', '0', '0', '0', '0', '0', '0' };
    char [][] tab =new char[256][8];
    for(int i = 0; i < 256; i ++) {
        String s = Integer.toBinaryString(i);
        char[] charArray = s.toCharArray();
     
        // on rempli de '0'
        System.arraycopy(zeroFilledArray, 0, tab[i], 0, 8);
     
        // on rempli à droite les caractères de la chaine
        System.arraycopy(charArray, 0, tab[i], 8 - charArray.length, charArray.length);
    }
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  8. #8
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Par défaut
    merci le y@ms, le niveau de ta solution est plus élevé que celui de mes ressources actuelles, mais ça marche, alors c'est tout !, extra.

    philippe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion d'entier en binaire sur 2 caractères
    Par seiryujay dans le forum C#
    Réponses: 2
    Dernier message: 10/07/2009, 14h51
  2. Conversion entiers longs > binaire
    Par Fabiani dans le forum VB.NET
    Réponses: 3
    Dernier message: 21/02/2009, 01h55
  3. conversion entier -> binaire
    Par dereck1333 dans le forum C
    Réponses: 18
    Dernier message: 18/11/2007, 19h56
  4. [debutant][hexadecimal]Conversion entier hexadecimal
    Par Mobaladje dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 14/05/2004, 07h50
  5. Affichage d'entiers en binaire.
    Par Tifauv' dans le forum C
    Réponses: 4
    Dernier message: 08/12/2003, 20h54

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