Partage
  • Partager sur Facebook
  • Partager sur Twitter

Convertir Hexa en Decimal

Algo d'une fonction

Sujet résolu
    9 avril 2009 à 11:37:53

    Bonjour à tous.

    Je me permet de poster un message ici, car je voudrais doit crée une fonction permettant de convertir une valeur en hexadecimal en une valeur decimal.
    Je me casse la tête depuis quelques jours sur ca et je n'arrive pas à faire son algo.

    Si quelqu'un aurait une méthode à suivre pour la conversion (car je me souvient plus le systeme).
    Je ne demande pas une fonction déjà fait ou celle déjà existante car c'est pour un TP et je dois crée ma propre fonction.

    Merci d'avance pour votre aide :) .
    • Partager sur Facebook
    • Partager sur Twitter
      9 avril 2009 à 12:03:14

      Tite solution à chaud :

      - Tu récupères chaque chiffre de ton nombre
      - Tu mets chaque chiffre dans un tableau
      - Chaque case du tableau est multiplié par 16 puissance (indice)
      - Tu additionnes chaque résultat
      - tu retournes le nombre décimale

      Voilou voilou
      • Partager sur Facebook
      • Partager sur Twitter
        9 avril 2009 à 12:18:59

        J'y avait penser, mais le problème qui se poser était comment recuperer nombre pas nombre :s

        • Partager sur Facebook
        • Partager sur Twitter
          9 avril 2009 à 12:42:23

          Et les développeurs inventèrent... parseInt() ! :)

          Alors alors... ta fonction prendra un nombre hexa en paramètre. En supposant que ce nombre sera une chaîne du type : "4A" (par exemple), ça va être très facile :

          var nb_hexa = "4A";
          var nb_decimal = parseInt(nb_hexa,16);
          alert(nb_decimal);
          


          parseInt() sert à transformer une chaîne de caractère en entier... mais permet également de préciser la base... Pratique ! :)

          Walaaa...
          • Partager sur Facebook
          • Partager sur Twitter
            9 avril 2009 à 12:47:29

            Oui je sais c'est comme pour le toString(16) pour le sens inverse, mais là je dois coder un equivalent, mon prof aime pas trop quand je prend la voie de la facilité, ou de peur que je finisse trop en avance bref j'en sais trop rien.

            Il faut que je face la conversion moi même, et j'aimerai savoir comment découpé une chaine caractere par caractere, pour pouvoir faire comme m'a dit Skelarh plus haut, c'est à dire l'enregistrer dans un tableau.

            Enfin bon merci quand même pour le parseInt ^^
            • Partager sur Facebook
            • Partager sur Twitter
              9 avril 2009 à 12:49:43

              Tu n'as pas besoin de coupé ta chaine =)

              var a = 'tictac';
              
              for (var i = 0, b = a.length; i < b; i++) {
                  a[i]; //Ma lettre magique
              }
              
              • Partager sur Facebook
              • Partager sur Twitter
                9 avril 2009 à 12:53:06

                Et pour faire plus rigoureux (enfin je crois que c'est plus rigoureux)... il me semble que charAt() est préféré...

                var a = 'tictac';
                
                for (var i = 0, b = a.length; i < b; i++) {
                    a.charAt(i); //Sa lettre magique
                }
                
                • Partager sur Facebook
                • Partager sur Twitter
                  9 avril 2009 à 12:56:17

                  Perso pour un truc fait main, j'aurais fait:

                  var hexdec = {0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15};
                  var dechex = [0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F'];
                  
                  function hexToDec(string) {
                  	var int = 0;
                  	
                  	for (var i = 0, b = string.length; i < b; i++) {
                  		int += hexdec[string[i].toUpperCase()] * Math.pow(16, (b - i - 1));
                  	}
                  	
                  	return int;
                  }
                  
                  function decToHex(int) {
                  	var string = '', tmp;
                  	
                  	while (int >= 16) {
                  		tmp = int % 16;
                  		int = (int - tmp) / 16;
                  		string = dechex[tmp] + string;
                  	}
                  	string = dechex[int] + string;
                  	
                  	return string;
                  }
                  


                  =)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    9 avril 2009 à 13:16:43

                    J'ai ajouter la fonction inverse =o
                    J'ai dû me creser un peu plus les méninge pour elle xD
                    • Partager sur Facebook
                    • Partager sur Twitter
                      9 avril 2009 à 14:44:16

                      Oui mais pour celle là j'avais déjà la fonction de crée ^^ Merci quand même :)

                      Par contre comment faire pour que la chaine garde les zero quand je la retransmer par la suite. Parce que quand je veut par exemple la rattacher a une autre, il me supprime tout les zero qui se trouve devant.

                      Par exemple:
                      00FF21

                      Ca va donner : FF21 alors que je voudrait garder l'original.

                      Y a une fonction pour preserver la chaine?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        9 avril 2009 à 14:57:46

                        Mais euh, j'ai pas tout compris la.

                        Tu veux dire si tu fais:
                        decToHex(hexToDec('00FF21')); ?

                        Si c'est ça, non =o
                        • Partager sur Facebook
                        • Partager sur Twitter
                          9 avril 2009 à 15:03:49

                          En faite voilà un exemple de ce que je fait:
                          var z = hex_color.lenght;
                          	while(z < 6)
                          	{
                          		z = hex_color.lenght;
                          		hex_color = "0"+hexcolor+"";
                          	}
                          


                          En faite tant que la chaine ne fait pas 6 caractère je rajoute un 0 devant, mais le souci c'est qu'il doit prendre ma chaine pour un nombre et donc il ne prend pas en compte mes 0 que je rajoute.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            9 avril 2009 à 15:09:00

                            for (var i = 0, a = 6 - hex_color.length; i < a; i++) {
                                hex_color = '0' + hex_color;
                            }
                            


                            Tu as oublier le _ dans ton nom de variable
                            • Partager sur Facebook
                            • Partager sur Twitter
                              9 avril 2009 à 15:10:05

                              Skelarh, on est pas en php ici hein =o

                              Edit: Grilled.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                9 avril 2009 à 15:10:43

                                Tu as été plus rapide que mon EDIT ^^ je m'en suis rendu compte après !
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  9 avril 2009 à 15:12:49

                                  En effet petite boulete de ma part ^^

                                  Merci beaucoup, vous m'avez enlevé une belle épine du pied :p

                                  Sujet résolu.
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Convertir Hexa en Decimal

                                  × 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