2011-12-01 5 views
0

Comme dans le titre ci-dessus. Je veux prendre le nombre hexadécimal d'une EditTextConvertir un nombre hexadécimal en nombre décimal en Java (Android)

EditText number = (EditText) findViewById (R.id.etDisplay); 
Editable stringEditable = number.getText().toString; 
String nuovo = stringEditable.toString(); 

Je veux convertir nuovo à un decimal number.

+4

Premier résultat de recherche Google: http://www.roseindia.net/java/java-conversion/HexadecimalToDecima.shtml –

+1

duplication possible de [question de performance: moyen le plus rapide de convertir le caractère hexadécimal en sa valeur numérique en Java?] (http://stackoverflow.com/questions/221001/performance-question-most-way-to-convert-hexadecimal-char-to-its-number-value) – Mark

Répondre

26
int i = Integer.parseInt(nuovo, 16); 
+4

Integer.parseInt ("DEADBEEF", 16) lance le format numérique exception – mickeymoon

+0

J'ai eu ce problème aussi. Voir ma réponse, ci-dessous: http://stackoverflow.com/a/31140496/1617737 –

4

Essayez Integer.parseInt(nuovo,16).

+1

Est-ce que ceux qui évaluent le bas s'il vous plaît expliquer pourquoi? S'il y a des erreurs dans les réponses, nous aimerions les corriger. – Thomas

+0

* hausser les épaules * yeap tout sauf pixel a downvotes mais ce n'était pas lui – Will

1

Voici une petite démo pour vous. Il utilise le java.util.Scanner et le recouvre.

import java.util.Scanner; 



public class hex { 
    static long dec=0; 


    static long squ(int i) 
    { 
     long pow=16; 
     if(i==0) 
     { 
       return 1; 
     } 
     else if(i==1) 
     { 

      return pow; 

     } 
     else 
     { 
      for(int k=2;k<=i;k++) 
      { 
       pow=pow*16; 
      } 
      return pow; 
     } 
    } 
    public static void main(String[] args) { 

     Scanner so=new Scanner(System.in); 
     System.out.println("enter the hexa decimal no"); 
     String hx=so.next(); 

     hx.toLowerCase(); 
     char c[]=hx.toCharArray(); 
     int j=c.length; 
     int x=j; 

     int i=0; 

     j--; 
     while(j>=0) 
     { 
      if(c[j]=='a'|c[j]=='b'|c[j]=='c'|c[j]=='d'|c[j]=='e'|c[j]=='f'|c[j]=='1'|c[j]=='2'|c[j]=='3'|c[j]=='4'|c[j]=='5'|c[j]=='6'|c[j]=='7'|c[j]=='8'|c[j]=='9') 
      { 
       j--; 
      } 
      else 
      { 

       i++; 
       break; 
      } 

     } 
     if(i>0) 
     { 
      System.out.println("its not hex decimal no"); 

     } 
     else 
     { 
      System.out.println("it s hex decimal no"); 
      x--; 
      int xy=0; 
      while(x>=0) 
      { 
       long z=squ(xy); 
       ++xy; 
       char r=c[x]; 
       String s=""+r; 


       switch(s) 
       { 
       case "a": dec=dec+(10*z); 
          break; 
       case "b": dec=dec+(11*z); 
       break; 
       case "c": dec=dec+(12*z); 
       break; 
       case "d": dec=dec+(13*z); 
       break; 
       case "e": dec=dec+(14*z); 
       break; 
       case "f": dec=dec+(15*z); 
       break; 
       case "1": dec=dec+(1*z); 
       break; 
       case "2": dec=dec+(2*z); 
       break; 
       case "3": dec=dec+(3*z); 
       break; 
       case "4": dec=dec+(4*z); 
       break; 
       case "5": dec=dec+(5*z); 
       break; 
       case "6": dec=dec+(6*z); 
       break; 
       case "7": dec=dec+(7*z); 
       break; 
       case "8": dec=dec+(8*z); 
       break; 
       case "9": dec=dec+(9*z); 
       break; 
       case "0": dec=dec+(0*z); 
       break; 
       default:System.out.println("cant find****"+s); 
       break; 


       } 

       x--; 
      } 
      System.out.println("final decimal equ is*****"+dec); 
     } 


    } 

} 
3

La réponse acceptée travaillera dans certains cas, mais si votre numéro peut être plus grand que Integer.MAX_VALUE, vous voudrez peut-être utiliser quelque chose comme ceci:

public static long hexToLong(String hex) { 
    return Long.parseLong(hex, 16); 
} 
Questions connexes