2017-10-14 26 views
0

Je dois faire un convertisseur hexadécimal en décimal en Java, sans utiliser de méthodes de conversion intégrées. La chaîne hexadécimale est entrée en tant qu'argument et une autre méthode affiche la valeur décimale convertie. Je suis sûr que je connais un moyen de le faire, mais cela semble très long et inefficace. Je veux vraiment savoir si je peux le faire en utilisant un tableau pour stocker l'entrée chaîne hexadécimale. Depuis un tableau commence à 0, est-il un moyen de stocker chaque caractère hexadécimal comme une valeur distincte dans un tableau? Si c'est possible, puis-je avoir une boucle d'exécution pour la longueur du tableau, où chaque caractère est multiplié par 16 puis élevé à la puissance de son indice de tableau? Désolé, c'est une question stupide. Je suis vraiment nouveau à la programmation et je veux essayer de résoudre le problème de cette façon. Merci d'avance.L'utilisation d'un tableau pour convertir un hex en convertisseur décimal en Java?

Dans le cas où cela est impossible, j'ai essayé de faire mon autre travail d'idée, mais je reçois toujours 0 pour ma sortie :(

package com.company; 

public class Main { 

    public static void main(String[] hexInput) { 
     int finalConversion = convertHexToDec(hexInput[0]); 
     System.out.println(finalConversion); 
    } 


    public static int convertHexToDec(String hexInput) { 
     String max = "0xFFFFFFFF"; 
     int hexValue = 0; 
     int tracker = 0; 
     int total = 0; 

     while (tracker < max.length()) { 
      tracker += 1; 
      char current = hexInput.charAt(hexValue); 
      int numCurrent = max.indexOf(current); 
      total = 16 * total + numCurrent; 
     } 
     return total; 
    } 
} 
+0

'Je suis vraiment nouveau à la programmation et Voulez-vous essayer de résoudre le problème de cette façon? Où est votre code de pièce essayé? –

+0

Cherchez-vous la méthode String getBytes()? – Turo

Répondre

0
static long hexToDec(String hex){ 
    long dec = 0; 
    for(int i = 0 ; i < hex.length() ; i++) 
     dec += hextToDec(hex.charAt(hex.length() - i - 1)) * Math.pow(16 , i);// dec += 10; is the same as dec = dec + 10; 
    return dec; 
} 

static long hextToDec(char c){ 
    switch (c){ 
     case '1': 
      return 1; 
     case '2': 
      return 2; 
     case '3': 
      return 3; 
     case '4': 
      return 4; 
     case '5': 
      return 5; 
     case '6': 
      return 6; 
     case '7': 
      return 7; 
     case '8': 
      return 8; 
     case '9': 
      return 9; 
     case 'a': 
     case 'A': 
      return 10; 
     case 'b': 
     case 'B': 
      return 11; 
     case 'c': 
     case 'C': 
      return 12; 
     case 'd': 
     case 'D': 
      return 13; 
     case 'e': 
     case 'E': 
      return 14; 
     default: 
      return 15; 


    } 
}