Partage
  • Partager sur Facebook
  • Partager sur Twitter

Hexadécimal -> Binaire

Sujet résolu
    13 février 2012 à 18:56:40

    Salut, je dois créer un programme pour transformer un nombre en hexadécimal en binaire...
    Je me suis sans dote planté quelque part, mais je ne vois pas ou...
    Svp, si queqlu'n pouvait m'aider... Merci d'avance...
    import java.util.Scanner;
    
    public class Seance6exo2
    {
    	public static void main(String[] args)
     {
    	
    	int i=0;
    	
    	while(i<b.length())
    	{
    		char temp = b.CharAt(i);
    		b.deleteCharAt(i);
    		String b = convertir(temp);
    		int j=0;
    		while(j<4)
    		{
    			b.insert(i+j, b ,CharAt(j));
    			j++;
    		}
    		
    	}
     }
    
    	public static String convertir(char c)
     {
    	String res=" ";
    	int i=0;
    	if(c <= '9' & c >='F')
    	c = 1;
     }
    
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      13 février 2012 à 19:04:31

      Heu tu le déclare où ton objet b ?

      EDIT:

      Ah ok, tu veux stocker le nombre binaire dans ta chaine, sauf que tu l'as pas déclarée x)

      EDIT 2:

      Et il n'y a pas création de référence dans ta deuxième fonction, donc elle ne sert à rien vu que rien n'est modifié. char est un type de base, donc en le passant en paramètre ça ne crée justement pas de référence.
      • Partager sur Facebook
      • Partager sur Twitter
        13 février 2012 à 19:11:52

        En fait je débute avec les fonctions, donc pas encore très chaud je voulais juste tenter... maintenant, j'ai entendu parler qu'il était possible de le faire en utilisant les StrinBuffer... mais perso je vois pas comment le faire...
        Tu sais pas me montrer?
        • Partager sur Facebook
        • Partager sur Twitter
          13 février 2012 à 19:59:22

          Tu n'as pas besoin des StringBuffer pour faire cette conversion mais de revoir la base des fonction !

          Dans une fonction si en parametre tu recupere un type primitif dans la fonction du travaillera avec une copie de celle ci mais si c'est un Objet tu travaillera directement dessus (pour faire simple)
          test ça :
          public static void main(String args[]){
              char car = 'b';
              changeCaractere(car);
              System.out.println(car); // affiche b car la fonction changeCaractere travaille avec une copie de car
          }
          
          public static void changeCaractere(char car){    
          	car = 'd'; // ici tu modifie la copie de car en d donc sortie de ta fonction rien a changé
          }
          


          Ensuite ta fonction :
          public static String convertir(char c)
          ne renvoie rien et pourtant tu precise qu'elle renvoie un string !
          j'espere avoir était un peu clair ^^

          edit : et b il est instancié où ?
          • Partager sur Facebook
          • Partager sur Twitter
            15 février 2012 à 15:52:12

            Pourquoi faire simple quand on peut faire compliqué ;)

            String str = "1F"; // notre chaine hexa	
            int i = Integer.parseInt(str, 16); // on demande une conversion en entier; on indique que l'on utilise une base 16
            System.out.println(Integer.toBinaryString(i) ); // on affiche la représentation binaire
            


            Mais évidement, je suppose que le but de ta question était surtout à but pédagogique.
            Toutefois, ma réponse n'est pas si déplacée que ça. Elle montre qu'il est plus facile de résoudre le problème en le découpant en fonction successive.

            Conversion Héxadécimal => décimal
            Conversion décimal => binaire sous forme de chaine de caractère

            Pour la première, il faut lire la chaine Hexa caractère par caractère. Chaque caractère doit être converti dans sa forme décimal ( c'est le but de ta fonction "convertir") auquel il faut rajouter la valeur du poids. Le tout est ajouté à une valeur décimal.

            Pour la seconde, un StringBuffer peut être utile. Pour chaque bit ( il faut utiliser un boucle avec les opérateurs binaire pour tester chaque bit), on rajoute "1" ou "0" à la StringBuffer.



            Tu peux également regarder les sources des fonctions standards parseInt et toBinaryString pour regarder comment cela fonctionne.
            • Partager sur Facebook
            • Partager sur Twitter
              15 février 2012 à 16:27:43

              Attention aux concepts quand ils sont importants :

              Citation : Sebajuste

              Conversion Héxadécimal => décimal
              Conversion décimal => binaire sous forme de chaine de caractère


              Tu ne fais pas vraiment ça. Tu convertis ta représentation hexadécimale du nombre en... ben en nombre lui-même, et tu reconvertis ce nombre en représentation binaire.
              La variable intermédiaire est un nombre indépendamment de toute base, pas un décimal. D'ailleurs, pour l'ordinateur, sa représentation est binaire.

              Mais oui je suis d'accord, pour convertir un nombre de sa représentation en base N vers sa représentation en base K, ça se fait en une ligne quand on dégage les variables inutiles :
              // N et K sont des nombres, le nombre est un entier dans les valeurs limites d'un long
              Long.toString(Long.parseLong("Représentation du nombre en base N", N), K)
              


              Cela dit je me doute bien que c'est à but éducatif donc que ce n'est pas ce qui est demandé.
              Un indice toutefois :

              La conversion de la base 16 vers la base 2 est super simple : chaque chiffre hexadécimal de la base 16 est toujours représenté par le même groupe de quatre chiffres binaires.

              Sachant ça, tu peux convertir un nombre de taille arbitraire avec une boucle et une fonction de correspondance.
              • Partager sur Facebook
              • Partager sur Twitter

              Hexadécimal -> Binaire

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown