2011-12-01 86 views
0

與上述標題相同。我想從一個EditText在Java中將十六進制數轉換爲十進制數(Android)

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

我想nuovo轉換爲decimal number採取十六進制數。

+4

從谷歌搜索第一個結果是:http:/的/www.roseindia.net/java/java-conversion/HexadecimalToDecima.shtml –

+1

可能重複[性能問題:爲十六進制字符轉換爲Java中其數值的最快方式(http://stackoverflow.com/questions/221001/performance-question-faster-way-to-convert-hexadecimal-char-to-its-number-valu) – Mark

回答

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

Integer.parseInt(「DEADBEEF」,16)引發數字格式例外 – mickeymoon

+0

我也有這個問題。請參閱我的答案,下面:http://stackoverflow.com/a/31140496/1617737 –

4

嘗試Integer.parseInt(nuovo,16)

+1

那些降價請解釋爲什麼?如果答案中有錯誤,我們希望糾正它們。 – Thomas

+0

*聳聳肩*除了像素之外都有點贊成,但不是他 – Will

1

這是一個適合你的小演示。它使用java.util.Scanner並將其隱藏。

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

接受的答案會在某些情況下工作,但如果您的號碼可能會比Integer.MAX_VALUE大,你可能要使用這樣的事:

public static long hexToLong(String hex) { 
    return Long.parseLong(hex, 16); 
} 
相關問題